Configuración de samba
Introducción
Samba, al igual que todas las aplicaciones para Linux, dispone de un archivo de texto para su configuración. Se trata del archivo:
// Archivo de configuración de samba
/etc/samba/smb.conf
Aunque el archivo de configuración de samba es bastante extenso, para empezar a disfrutar de samba, tenemos que hacer muy pocos cambios. El archivo de configuración se divide en secciones identificadas por un nombre entre corchetes. Hay tres secciones especiales que son [global], [homes] y [printers]. La sección principal es la sección [global] que nos permite configurar los parámetros generales del servicio. La sección [homes] nos permitirá compartir las carpetas home de cada usuario, para que cada usuario pueda acceder a su carpeta home por la red. La sección [printers] nos permitirá compartir impresoras. Para compartir una carpeta, debemos crear una sección nueva. El nombre de la sección, será el nombre del recurso compartido. Ejemplo, si queremos compartir la carpeta /home/comun-profes y llamar al recurso compartido profes, debemos crear una sección llamada [profes]. Para facilitar la configuración de samba existe una herramienta llamada swat que permite, vía web, configurar la aplicación.
Puesto que editando el archivo smb.conf se pueden configurar más de 300 parámetros, dando lugar a miles de configuraciones, nos limitaremos a analizar los parámetros más relevantes y a la compartición de archivos e impresoras directamente.
Archivo smb.conf
Podemos ver un ejemplo del archivo de configuración de samba haciendo clic »aqui.
A continuación analizaremos un sencillo archivo smb.conf:
# Ejemplo de archivo de configuración de samba smb.conf
#Sección global, parámetros generales
[global]
# Seguridad por usuarios
security = user
# Grupo de trabajo 'Aula5'
workgroup = Aula5
# Las contraseñas se deberán enviar encriptadas
encrypt passwords = yes
# Samba será servidor wins
wins support = yes
# Nivel y longitud máxima del archivo de registro
log level = 1
max log size = 1000
# Por defecto, lectura y escritura
read only = no
# Se comparten también las impresoras
load printers = yes
# Sección homes, carpetas home de usuarios
[homes]
# Comentario
comment = Carpetas home
# No explorables
browsable = no
# Máscara de creación de archivos (rxw------)
create mask = 0700
# Máscara de creación de carpetas
directory mask = 0700
# Sección printers, impresoras
[printers]
path = /var/tmp
printable = yes
min print space = 2000
# Carpeta común profesores
[profesores]
# Ruta de la carpeta compartida
path = /home/samba/profesores
# Explorable
browsable = yes
# Lectura y escritura
read only = no
# Máscara de creación de archivos (rxwrxw---)
create mask = 0770
# Máscara de creación de carpetas
directory mask = 0770
# Carpeta común alumnos
[alumnos]
browsable = yes
read only = no
path = /home/samba/profesores/alumnos
# Carpeta común del centro (solo lectura)
[programas]
browsable = yes
read only = yes
# Se admiten invitados
guest ok = yes
path = /home/samba/programas
# Parámetros impresora
[laserjet5]
path = /tmp
# Se permite imprimir
printable = yes
Todas las líneas que comienzan por almoadilla (#) o punto y coma (;) son líneas de comentarios y son ignoradas por samba.
Como hemos comentado anteriormente, el archivo smb.conf está dividido en secciones identificadas con corchetes [ ] . Ninguna de las secciones son obligatorias aunque normalmente suelen tener las siguientes secciones:
Sección [global]
En la sección [global] se configuran los parámetros generales (globales) que determinarán el modo de comportamiento general del servidor samba. Todos los parámetros que se omitan tomarán el valor predefinido por defecto. Existen unos 300 parámetros que se pueden configurar en ésta sección. A continuación exponemos los parámetros más significativos y ejemplo de valor:
- hosts allow = 192. 127.
- Permite especificar desde qué direcciones IPs se podrá acceder al servicio. Ej.: Si ponemos 192.168. significa todas las que empiecen por 192.168.
- Se pueden poner IPs concretas
- hosts deny = 10.
- Igual que hosts allow pero para especificar los rangos no permitidos
- security = share
- Permite determinar el modo de compartición de recursos de samba. Hay cinco opciones posibles: share, user, domain, server y ads.
- 'Share' significa compartir los recursos con contraseña (como W95, 98,...).
- 'User' gestiona los permisos por usuario (como W2000 y WXP).
- 'Domain' gestiona los permisos por dominio.
- 'Server' indica que los permisos son gestionados por otro servidor.
- 'Ads' hace que samba se comporte como un miembro de un dominio Active Directory y por lo tanto requiere un servidor W2000 Server o W2003 Server.
- Samba no puede actuar como controlador de dominio de Active Directory, es decir, no puede sustituir a Windows 2000 Server, pero sí puede actuar como controlador de dominio de Windows NT.
- domain logons = yes
- Para que samba sea autentificador del dominio. En este caso, habrá que poner 'security = user' porque no tiene sentido que el samba sea servidor de dominio y que comparta los recursos con contraseña.
- domain master = yes
- Para que samba sea controlador de dominio. Lo lógico es que domain logons esté a 'yes'
- encrypt passwords = yes
- Hace que samba solo reconozca passwords encriptados. Las primeras versiones de W95 enviaban las contraseñas en texto plano pero tanto las últimas versiones de Windows 95 como W98, 2000 y XP las encriptan. Se puede impedir que W98 las encripte cambiando un valor del registro (ver encription.txt en samba) pero lo recomendable es que se envíen encriptadas para impedir que otros usuarios puedan descubrirlas capturando paquetes de datos (sniffing). Los password encriptados de samba se guardan en otro archivo:
- smb passwd file = /etc/smbpasswd
- Archivo que guarda las contraseñas encriptadas de acceso a samba. Para que un usuario pueda acceder a samba debe existir en el sistema pero no tiene por qué coincidir la contraseña de un usuario en el sistema linux con la de samba aunque es aconsejable.
- logon script = INICIO.BAT
- Indica el script que ejecutarán los clientes windows al loguearse
- password server = 192.168.0.10
- Indica qué servidor autentificará a los usuarios
- wins server = 192.168.0.10
- Indica quién es el servidor de nombres wins
- wins support = yes
- Hace que nuestro samba sea servidor wins
- load printers = yes
- Para que automáticamente comparta todas las impresoras del sistema
Sección [homes]
En ésta sección se configuran los parámetros para compartir la carpeta home (carpeta donde se almacena el perfil y todos los documentos) de cada usuario. Esta sección es opcional. Si no existe, no se compartirán las carpetas home de cada usuario. Se utiliza cuando se desean crear perfiles móviles de forma que cuando se identifique el usuario en cualquiera de los PCs de la red, se mapee de forma automática su perfil.
Sección [printers]
En ésta sección se configuran los parámetros para compartir las impresoras o colas de impresión disponibles en el servidor.
Una sección por cada carpeta compartida
Cada vez que se comparte una carpeta, hay que crear una sección denominada como se desee ya que dicho nombre será el nombre del recurso compartido. Ejemplo, si deseamos compartir la carpeta /home/samba/alumnos crearemos una sección [alumnos] donde se configurará dicho recurso compartido con los parámetros específicos para dicho recurso. Parámetros destacables:
- browseable = yes
- Indica si el recurso compartido será visible cuando se escanea la red, por ejemplo haciendo clic en 'Mis sitios de red' en Windows
- create mask = 0770
- Establece la máscara de creación de archivos, igual con directory mask para la creación de carpetas
- guest ok = yes
- Indica que cualquier usuario sin contraseña tiene permiso de acceso
- valid users = pepe, juan
- Indica qué usuarios pueden acceder al recurso
Consejos
Es conveniente crear en /home una carpeta llamada samba y que cuelguen de ella todas las carpetas compartidas, para tener todos los datos de usuario dentro de /home y sea sencillo hacer las copias de seguridad.
Si somos servidores de dominio y vamos a tener en nuestra red clientes Windows, es conveniente crear un recurso compartido llamado netlogon para poder almacenar scripts de inicio y archivos de políticas ya que los clientes Windows están preconfigurados para acceder a dicho recurso compartido:
// Si samba es controladores de dominio se recomienda crear recurso 'netlogon'
[netlogon]
path = /home/samba/netlogon
public = no
writeable = no
browsable = no
Si deseamos almacenar los drivers de impresora para los clientes Windows crearemos una sección [print$]
Samba analiza cada 60 segundos el archivo smb.conf y si ha habido cambios, estos tomarán efecto. Es conveniente crear una copia de seguridad del archivo smb.conf antes de hacer ningún cambio para poder retornar al estado anterior en caso de que hagamos una modificación incorrecta del archivo que impida que arranque el servicio.
Para comprobar que nuestro archivo smb.conf está correcto, podemos utilizar el comando testparm que analiza cada línea en busca de errores.
Para tener una descripción detallada de todos los parámetros se puede consultar la página del manual de smb.conf:
// Página del manual de smb.conf
$ man smb.conf