Todos los ficheros de configuración que tienen que ver con el
servidor Samba se encuentran bajo el directorio
/etc/samba
. El fichero principal de configuración se
denomina /etc/samba/smb.conf
.
El objetivo es implantar un controlador de dominio Windows que obtenga la información de los usuarios de un servidor LDAP, para ofrecer la posibilidad a los clientes Windows que inicien sesión en el dominio. Por tanto habrá que instruir al servidor Samba que lea los usuarios de la base de datos LDAP.
Un fichero de configuración apropiado para conseguir dicho objetivo sería el siguiente:
[global] unix charset = LOCALE workgroup = DSIC2 netbios name = groucho passdb backend = ldapsam:ldap://127.0.0.1 username map = /etc/samba/smbusers log level = 2 syslog = 0 log file = /var/log/samba.log max log size = 50 smb ports = 139 445 name resolve order = hosts wins bcast wins server = 158.42.250.200 time server = Yes show add printer wizard = No add user script = /usr/sbin/smbldap-useradd -a -m '%u' delete user script = /usr/sbin/smbldap-userdel -r %u add group script = /usr/sbin/smbldap-groupadd -p '%g' delete group script = /usr/sbin/smbldap-groupdel '%g' add user to group script = /usr/sbin/smbldap-groupmod -m '%u' '%g' delete user from group script = /usr/sbin/smbldap-groupmod -x '%u' '%g' set primary group script = /usr/sbin/smbldap-usermod -g '%g' '%u' add machine script = /usr/sbin/smbldap-useradd -w '%u passwd program = /usr/sbin/smbldap-passwd '%u' logon script = scripts\logon.bat logon path = \\%L\profiles\%U logon drive = X: domain logons = Yes preferred master = Yes ldap admin dn = cn=root,dc=dsic2,dc=upv,dc=es ldap group suffix = ou=Groups ldap idmap suffix = ou=Idmap ldap machine suffix = ou=Computers ldap passwd sync = Yes ldap suffix = dc=dsic2,dc=upv,dc=es ldap user suffix = ou=Users idmap backend = ldap:ldap://127.0.0.1 idmap uid = 10000-20000 idmap gid = 10000-20000 printer admin = Administrator map acl inherit = Yes printing = cups printcap name = CUPS [netlogon] comment = Network Logon Service path = /var/lib/samba/netlogon guest ok = Yes locking = No [profiles] comment = Profile Share path = /var/lib/samba/profiles read only = No profile acls = Yes [print$] comment = Printer Drivers path = /var/lib/samba/drivers browseable = yes guest ok = no read only = yes write list = Administrator
Se puede verificar la corrección de este fichero ejecutando en el siguiente comando:
# testparm -s
Si el test ha ido bien, sería el momento de arrancar el servidor Samba y comprobar que se comporta como un verdadero controlador de dominio. Pero como hemos elegido como base de datos donde guardar la información del dominio el servidor LDAP, Samba tiene que tener un mecanismo de comunicación con el servidor LDAP.
En el fichero de configuración aparecen una serie de directivas que hacen mención a la configuración LDAP.
passdb backend = ldapsam:ldap://127.0.0.1
Esta directiva indica cual es la base de datos donde almacenar la información de cuentas (usuarios, máquinas y grupos). Los valores que puede tomar son: tdbsam, ldapsam, mysql, XML.
En nuestro caso el soporte elegido es ldapsam, lo cual implica que toda la información estará en un servidor LDAP. Otro parámetro es la dirección del servidor: ldap://127.0.0.1.
ldap admin dn = cn=root,dc=dsic2,dc=upv,dc=es
Aquí indicamos cual es el administrador del servicio de directorio.
ldap user suffix = ou=Users
Define la Unidad Organizativa donde almacenar cuentas de usuario. La ubicación de esta OU será relativa a la raíz del directorio.
ldap group suffix = ou=Groups
Define la Unidad Organizativa donde almacenar cuentas de grupo. La ubicación de esta OU será relativa a la raíz del directorio.
ldap machine suffix = ou=Computers
Define la Unidad Organizativa donde almacenar cuentas de máquina. La ubicación de esta OU será relativa a la raíz del directorio.
El único parámetro que no aparece en el fichero de configuración y que es necesario para que el administrador pueda llevar a cabo las operaciones necesarias sobre el servidor, es la contraseña que le permita autentificarse.
En vez de definirlo en el fichero
/etc/samba/smb.conf
se almacena en un fichero
especial con un formato particular y que se denomina
/etc/samba/secrets.tdb
. El siguiente comando permite
introducir esa contraseña en el fichero:
# smbpasswd -w contraseña
Dicha contraseña debe ser la misma que aparece en el fichero de
configuración del servidor LDAP
(/etc/openldap/slapd.conf
).
Ahora nos encontramos en disposición de arrancar el servidor Samba y comprobar que se ha creado el dominio.
# smbclient -L localhost -U% # net getlocalsid
Si las cosas han funcionado bien, deberíamos obtener información sobre el dominio y el SID del mismo.
SID for domain DSIC2 is: S-1-5-21-3504140859-1010554828-2431957765
Si obtenemos una respuesta como la de arriba, procederemos a crear objetos en el dominio. Para ello nos basaremos en las utilidades que se instalaron a la hora de crear el servicio de directorio (smbldap-tools). Existen diferentes scripts que nos permitirán añadir, modificar y borrar usuarios, grupos y maquinas en el dominio par que tanto clientes Windows como Linux puedan autentificarse. Estos mismos scripts se utilizan para que automáticamente una máquina se dé de alta en el dominio.
add user script = /usr/sbin/smbldap-useradd -a -m '%u' delete user script = /usr/sbin/smbldap-userdel -r %u add group script = /usr/sbin/smbldap-groupadd -p '%g' delete group script = /usr/sbin/smbldap-groupdel '%g' add user to group script = /usr/sbin/smbldap-groupmod -m '%u' '%g' delete user from group script = /usr/sbin/smbldap-groupmod -x '%u' '%g' set primary group script = /usr/sbin/smbldap-usermod -g '%g' '%u' add machine script = /usr/sbin/smbldap-useradd -w '%u passwd program = /usr/sbin/smbldap-passwd '%u'