Configuración del servidor Samba

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.

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'