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 = AdministratorSe 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'