Configuraciones del Servicio SAMBA
A continuación estaremos viendo los archivos, parámetros y recursos que componen las configuraciones del servicio samba para su correcto funcionamiento. Para ello, recomendamos leer nuestra página donde explicamos los aspectos fundamentales de este servicio.
Table of Contents
ToggleInformación del Sistema
Como vimos anteriormente, ejecutando «samba –d» vemos la información del sistema instalado con respecto a las configuraciones del servicio samba. A continuación, describiremos dichos parámetros.
PARÁMETROS | DESCRIPCIÓN |
BINDIR | Ejecutables comunes. |
CONFIGFILE | El archivo de configuración. |
LOGFILEBASE | Directorio de logs. |
DATADIR | Directorio con archivos de solo lectura independientes de la plataforma. |
LOCKDIR | Archivos de bloqueo (estos archivos no se pueden mezclar con configuraciones del registro). |
CACHEDIR | Datos que no son persistentes. |
CODEPAGEDIR | Archivos usados en internacionalización. |
WINBINDD_SOCKET_DIR | Socket del servicio winbindd. |
NTP_SIGND_SOCKET_DIR | Socket que usa el servicio NTP para comunicarse con SAMBA para firmar paquetes. |
WINBINDD_PRIVILEGED_SOCKET_DIR | Socket del servicio privilegiado winbind. |
SETUPDIR | Archivos para usar en diferentes configuraciones. |
PIDDIR_DIR | Archivos que guardan archivos de identificación de procesos y datos volátiles. |
STATEDIR | Datos que se modifican pero que son persistentes. |
MODULESDIR | Módulos de SAMBA. |
LMHOSTFILES | Archivo de nombres NetBIOS. |
NCALRPCDIR | Ruta que guarda archivos de tuberías para permitir el uso de RPC por comunicaciones inter-procesos en lugar de TCP/IP. |
SBINDIR | Ejecutables del superusuario y/o del sistema. |
Configuración del archivo principal
Recordemos que el archivo principal de configuraciones del servicio samba se encuentra en /etc/samba/smb.conf. La cantidad de parámetros que hay dentro de este archivo son varios, y muy importantes. A continuación los dividiremos en tres partes:
Primera Parte
- workgroup: Define el nombre del dominio.
- panic action: El comando que se ejecutará cuando el servicio de samba se cuelgue al arrancar, en el ejemplo se ejecutará un script con el PID del proceso como argumento (%d).
- passdb backend: Dice cómo y en donde se guardará la información relativa a usuarios y grupos de Samba. Podría ser smbpasswd (el viejo formato de almacenamiento), tdbsam – que es el formato predeterminado – (es un tipo de base de datos que usa claves y datos, está basada en gdbm pero que soporta más de un procesos escribiendo en ella a la vez) y ldapsam la cual usa un directorio LDAP.
- obey pam restrictions: Es para decirle a samba que siga las reglas de PAM de sesiones y cuentas. El valor predeterminado es no y es el que se usa en la mayoría de los casos. Por ejemplo, las contraseñas cifradas no son compatibles con PAM.
- passwd program: El programa que se usa para setear las contraseñas, %u es una variable que contiene el nombre del usuario.
- pam password change: Se usa cuando se pretende que PAM controle el cambio de contraseñas.
- usershare allow guests: Define si los recursos creados por usuarios distintos de root permiten el acceso de usuarios anónimos.
- browseable: Establece si el recurso se verá con el comando net view o con la lista de exploración en el administrador de archivos.
- directory mask: Es similar a create mask pero aplicado a directorios, también existe force directory mode. El valor predeterminado de create mask: 0755., y el de force directory mode: 000.
Segunda Parte
- path: Es el directorio del recurso. Si el servicio es una cola de impresión con acceso anónimo, la ruta debería tener permiso de escritura para todos además del sticky bit.
- valid users: Lista de usuarios que tienen permitido usar el recurso. Si el nombre empieza con ‘@’ puede ser un grupo NIS o de UNIX. Si comienza con ‘+’ es UNIX. En el caso de ‘&’ entonces se trata de NIS.
- dns forwarder: Tiene una lista de servidores DNS cuando SAMBA no puede resolver por su cuenta las direcciones por nombre.
- realm: Se refiere al realm kerberos, que es generalmente el nombre DNS del servidor de kerberos (y a su vez, también el propio servidor Samba).
- interfaces: Sirve para establecer qué interfaces se usarán, por ejemplo puede ser una lista de: Nombre de una interfaz, (por ej: enp0s3), Patrones (por ej: enp0s*.), una Dirección IP, un Par /IP/máscara, un par Broadcast/Máscara.
- netbios name: La primera parte del nombre DNS del servidor Samba.
- write list: Lista de usuarios y grupos que tienen permitido realizar modificaciones independientemente de lo que diga el parámetro read only.
- read only: Establece si el recurso es de sólo lectura.
- guest ok: Si se habilita este parámetro, se permite el acceso sin contraseñas usando los privilegios del usuario definido en guest ok.
- create mask: Cuando se crea un archivo el permiso que tendrá será el resultado de una operación AND bit a bit de el modo de acceso con este parámetro. Además, se hace una operación OR bit a bit con el parámetro force create mode. El valor predeterminado es 744, mientras que el valor por omisión es 000. Ahora bien, ara directorios el parámetro es directory mask.
Tercera Parte
- comment: Es un campo de texto que aparece junto al recurso compartido cuando un cliente consulta al servidor.
- map to guest: De manera predeterminada Samba rechaza cualquier solicitud con usuario y contraseña incorrecta. En cambio “Bad User” significa que si se ingresa un usuario inexistente, Samba lo tratará como un usuario invitado.
- passwd chat: Define la conversación entre smbd y passwd. Solamente se usa cuando unix password sync = no.
- unix password sync: Establece si cada vez que cambia la password de Samba también se modificará la password en Linux. Este parámetro no usa cuando Samba tiene rol de servidor de Active Directory.
- private dir: Es el directorio en el cual se guardarán archivos con contenido sensible, por ejemplo, contraseñas.
- server role: Establece el tipo de rol que desempeñará Samba.
- dns proxy: Define si samba hará consultas DNS por los clientes.
Tener en cuenta
Hay algunos parámetros en las configuraciones del servicio samba de este archivo que estará dentro de secciones marcadas entre corchetes []. Los cuales especificaremos a continuación:
- global: Tiene los parámetros predeterminados, es decir, todo lo que no está explícito en el resto de las secciones se toma de aquí.
- homes: Esta sección proporciona los directorios para cada usuario.
- printers: Permite acceder a las impresoras configuradas en el servidor.
- print$: Este es un recurso oculto usado por las impresoras.
Samba de Active Directory
Ahora veamos un ejemplo del comportamiento de Samba como servidor de Active directory.
[global]
- dns forwarder = 8.8.8.8
- netbios name = FOSS-AD
- realm = EXAMPLE.COM
- interfaces = lo eth0
- server role = active directory domain controller
- workgroup = EXAMPLE
- idmap_ldb:use rfc2307 = yes
# Audit settings
- full_audit:prefix = %u|%I|%m|%S
- full_audit:failure = connect
- full_audit:success = mkdir rmdir read pread write pwrite rename unlink
- full_audit:facility = local5
- full_audit:priority = notice
# TLS settings
- tls enabled = yes
- tls certfile = tls/foss-ad.example.comE/fullchain.pem
- tls keyfile = tls/foss-ad.example.comE/privkey.pem
- tls cafile = (none)
- #log-auth
- log level = 1 auth_audit:3 auth_json_audit:3
[netlogon]
- path = /var/lib/samba/sysvol/foss-ad.example.com/scripts
- read only = No
[sysvol]
- path = /var/lib/samba/sysvol
- read only = No
Parámetros Fundamentales
Las configuraciones del servicio SAMBA poseen parámetros fundamentales que no podemos dejar de lado. Debemos saber que el comportamiento de este servicio es el de un servidor autónomo. Es decir, el rol de este servicio está determinado por los parámetros: Security and Server role. Por tal motivo, no está unido a ningún dominio de AD.
Veamos estos en detalle:
Security
auto: Consulta el parámetro server role.
domain: Se usa cuando Samba está unido a un dominio NT, se accede a los recursos con usuario y contraseña.
user: Se accede a los recursos usando usuario y contraseña.
ads: Se utiliza cuando Samba está unido a un servicio de Active DIrectory.
Server Role
AUTO: Consulta el parámetro security.
MEMBER SERVER: Samba es miembro de un dominio NT.
CLASSIC BACKUP DOMAIN CONTROLLER: Samba es un PDC (Controlador de Dominio Primario) de backup de un dominio NT.
ACTIVE DIRECTORY DOMAIN CONTROLLER: Samba es un controlador de dominio del dominio de Active Directory.
CLASSIC PRIMARY DOMAIN CONTROLLER: Samba es un Controlador de Dominio Primario de un dominio NT.
STANDALONE: Es equivalente a security = user.
Como dijimos, si ninguno de los dos está seteado, el rol será de servidor autónomo. Los paquetes oficiales de SAMBA en CentOS tiene deshabilitada la opción de controlador de dominio para Active Directory.
Conectar con Recursos
Para conectar con recursos compartidos del sistema, no necesitamos realizar configuraciones dentro del servicio samba. Para esto, debemos tener en cuenta ciertos comandos y opciones como veremos a continuación.
Conectar con el servidor Samba y sus recursos compartidos:
La forma para conectar al servidor samba desde una terminal sigue la siguiente sintaxis. Suponiendo que el servidor samba está en la dirección IP 192.168.0.2 y el recuro compartido es la carpeta “samba” nos quedaría:
# smbclient //192.168.0.2/samba -U Usuario
Montaje de Recursos compartidos:
Otra manera que tenemos de acceder es montando el recurso compartido. Suponiendo que el servidor samba está en la IP 192.168.0.2 y el recurso es la carpeta “samba”, podemos usar el comando mount.cifs:
# mount.cifs -o user=usuario1 //192.168.0.2/samba /mnt/app1
Luego de esto nos pedirá una contraseña, la ingresamos y ya podremos ver los archivos de dicho recurso.
Archivo /etc/samba/lmhosts
Este archivo es similar a /etc/hosts con la única diferencia que en la columna derecha (luego de la dirección IP) los nombres especificados son NetBios en vez de nombres DNS. Debido a esto podemos asignarles distintos recursos. Veamos el siguiente ejemplo:
192.168.100.15 Contable#20
192.168.100.16 Marketing#1b
192.168.100.17 Soporte#20
Con el tipo de recurso «1b» le hemos asignado al área de Marketing la función de controlador de dominio primario (PDC) para el dominio SIMPLE. En cuanto al área de Soporte y Contable, simplemente hemos definido estaciones de trabajo standard. Es decir, la asignación a 192.168.100.15 y 192.168.100.17 solamente se hará cuando se consulte el tipo de nombre “0x20” (servidor). Cualquier otro tipo no será resuelto para el nombre Marketing o Soporte.
Veamos un ejemplo:
El siguiente directorio posee documentos para el grupo encargados de Marketing en una empresa:
[Marketing]
comment = Docunentos del grupo Marketing
path = /var/lib/samba/Marketing
public = No
writable = Yes
write list = @Marketing
read only = yes
valid user = @Soporte @Marketing
create mask = 0664
directory mask = 2770
Gestión de usuarios en Samba
Alta de usuarios en Samba:
Para dar de alta cuentas de usuario en Samba primero tiene que existir en Linux:
# useradd -M -s /bin/nologin smbuser
Crear un usuario Samba y establecer contraseña:
Para agregar un usuario de Samba es necesario agregarlo con el comando smbpasswd .
# smbpasswd -a smbuser
Este comando usará la base de datos de contraseñas de acuerdo al parámetro passdb backend .
Borrar un usuario Samba:
# smbpasswd -x smbuser
Ver información de un usuario:
# pdbedit -L -v -u smbuser
Este comando solo se puede usar cuando passdb backend = tdbsam (La cual es su configuración predeterminada).
Registros de Logs en Samba
Unos de los recursos importantes dentro aquí, no solo en las configuraciones del servicio samba, son los Resgistros de Logs. Por tanto, los eventos ocurridos dentro del servicio samba los podremos encontrar en /var/log/samba. Veamos un ejemplo:
La descripción de cada parámetro es muy importantes aquí, veamos la descripción a continuación:
PARÁMETRO | DESCRIPCIÓN |
log file | La ruta para los logs de samba,%m es una variable que se expande al nombre del host del cliente (esta información solamente estará disponible si Samba escucha en el puerto 139). En la sección VARIABLE SUBSTITUTIONS de la página del manual de smb.conf figura la lista de variables. |
syslog | Sirve para asignar el nivel de debug en syslog, si es 0 significa que se loguearán los errores y mensajes más graves también. |
full_audit:failure | Registra las fallas en las operaciones del VFS. |
full_audit:facility | Establece el subsistema de syslog que se usará para operaciones del VFS. |
full_audit:priority | Establece la prioridad de mensajes que se registrarán relativas al VFS. |
full_audit:success | Registra las operaciones exitosas en las operaciones del VFS. |
full_audit:prefix | Pone un prefijo a cada mensaje del VFS (sistema virtual de archivos). |
max log size | El tamaño máximo del archivo de log en kilobytes. |
Asociación de nombres de usuarios
A continuación estableceremos las configuraciones del servicio samba con respecto a la asociación de nombres de usuarios de un Sistema Operativo a otro.
Identity Mapping
Samba tiene la capacidad de asociar nombres de usuarios en Windows (SIDs) a nombres de usuarios en Linux (POSIX). Este servicio tiene varios backends disponibles para realizar ese proceso que se llama en inglés IDENTITY MAPPING o simplemente ID MAPPING.
Veamos esto en detalle:
PARÁMETROS | DESCRIPCIÓN |
tdb | Es el predeterminado. |
tdb2 | Es un reemplazo para tdb en ambientes cluterizados con SAMBA y CTDB. |
ldap | Sirve para que Winbind use LDAP para almacenar y obtener las asociaciones SID/uid/gid. |
rid | Es un modo de asociación determinista que no necesita una base de datos. |
nss | Es un método sencillo para realizar asociaciones. |
autorid | Es una manera más determinista de asociación pero más fácil que rid. |
rfc2307 | Se usa para leer asociaciones del servidor AD que usa las extensiones de esquema RFC2307. |
Veamos un ejemplo de cómo configurar dos dominios con idmap_rid, el dominio principal y un dominio confiable, dejando el esquema predeterminado en tdb.
[global]
- security = domain
- workgroup = samba_directory_group
- idmap config * : backend = tdb
- idmap config * : range = 1000000-1999999
- idmap config lathack : backend = rid
- idmap config lathack : range = 5000000-5999999
- idmap config LINUX : backend = rid
- idmap config LINUX : range = 6000000-6999999
Cuando Samba se comporta como un controlador de AD, basta el siguiente parámetro:
idmap_ldb: use rfc2307 = yes
Parámetro username map
Esta opción te permite especificar un archivo conteniendo una asociación de nombres de usuarios de clientes al servidor. El uso más común es para vincular usuarios de Windows a usuarios de Linux. El formato del archivo es:
nombre_de_usuario_linux = nombres_de_usuario_windows
Por lo tanto:
Si el parámetro security está en user, la asociación se realiza antes de la autenticación. En cambio, si Samba es miembro de un Servicio de Active Directory o Dominios Windows NT, la vinculación se efectúa luego de la correcta autenticación. Esto último requiere que el nombre de usuario de Windows incluya también el nombre del dominio.