Lathack

Configuraciones del Servicio SAMBA

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.

Informació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:

  1. 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í.
  2. homes: Esta sección proporciona los directorios para cada usuario.
  3. printers: Permite acceder a las impresoras configuradas en el servidor.
  4. 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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

cinco − cuatro =

Lathack
Scroll al inicio