Xunta de Galicia


Powered by MediaWiki

Integración de Samba e LDAP

O procedemento para integrar Samba e LDAP pasa por asegurar que a validación das persoas usuarias do primeiro empregue os servizos do segundo para asegurar identidades. Coa integración destes dous servizos os usuarios e usuarias de Samba xa non teñen que selo do sistema, e a administración da súa información pódese levar a cabo traballando só no LDAP.

O obxectivo da avaliación tutelada, e da práctica asociada é introducir ao público lector nas procuras de información na rede, información técnica descritiva dos procesos a seguir para acadar un obxectivo. Terá que empregar diferentes guías, ter en conta contornos de referencia, versións de aplicativos e sistemas operativos, e a dispoñibilidade das ferramentas.

Fontes de información

Na web temos unha gran cantidade de información relevante sobre asuntos técnicos, coma este que nos ocupa. A dificultade está moitas veces en discernir o grao de relevancia de cada fonte. As buscas en Google, empregando as palabras clave axeitadas, pódennos levar a fontes moi destacadas. Por exemplo, se estamos empregando Ubuntu 8.04, e queremos atopar información sobre como facer a integración de Samba e LDAP, unha boa escolla de palabras chave podería ser “ubuntu 8.04 samba ldap”. Entre os titoriais atopados é recomendábel facer unha compilación, e comparar os pasos seguidos por cada unha, para ver de atopar diverxencias significativas.

Tamén hai que ter en conta as relacións entre as diferentes distribucións: se sabemos que Ubuntu deriva de Debian, é moi posíbel que a información sobre configuración de servizos aplicábel a Debian tamén sexa aplicábel Ubuntu, polo que a nosa procura no Google podería ser “debian samba ldap”. Neste caso, no número de respostas para Debian é moito maior que para Ubuntu, polo que é recomendábel botar unha ollada sobre elas.

Tendo varias fontes que nos parezan convincentes, sería bo facer unha comparación entre elas, os puntos en común, e as diverxencias. Por último, con toda a documentación a man, trátase de levar a cabo unha das solucións propostas.

Solución proposta

Como exemplo do problema resolto, e resultado da compilación de diversas fontes, ofrécese a continuación unha guía paso a paso para a integración de servizos entre os ficheiros compartidos de Samba e a validación de usuarios de LDAP. Para a implementación desta solución pártese dunha máquina acabada de instalar.

En primeiro lugar, procedemos á instalación dalgúns paquetes necesarios para algúns dos pasos posteriores: “make”, “gcc”, “gcc++”, “gengetopt”, “libpopt-dev”, “python-crypto”, “apache2”. Despois instalamos o servidor LDAP, cos paquetes “slapd”, e “ldap-utils” tal e como foi descrito antes, incluíndo a reconfiguración. O seguinte é a ferramenta de administración de ldap vía web, phpldapadmin, e o paquete de ferramentas de xestión de usuarios e usuarias Samba en LDAP, “smbldap-tools”. Cada un destes paquetes tirará das dependencias precisas para o seu funcionamento.

Para crear contrasinais de WindowsNT temos que empregar un aplicativo que non esta empaquetado en Ubuntu e chamado mkntpwd. O proceso de instalación a seguir consiste en descargar as fontes do programa, descomprimilas, lanzar o proceso de compilación, e copiar o binario resultante a unha situación en PATH:

cd /opt/wget http://www.silcom.com.pe/soft/mkntpwd.tar.gztar -zxf mkntpwd.tar.gzcd mkntpwdmakecp mkntpwd /usr/local/bincd /opt/rm mkntpwd* -rf

Entón podemos instalar o Samba (paquetes samba e samba-doc), empregando como nome de dominio o mesmo que empregamos no LDAP. O seguinte que teremos que facer será introducir no schema de LDAP as estruturas de datos necesarias para o emprego dos tipos de obxectos que necesita Samba.

Temos en /usr/share/doc/samba-doc/examples/LDAP/ o ficheiro samba.schema, que imos incorporar na configuración de slapd:

cd /usr/share/doc/samba-doc/examples/LDAPgunzip samba.schema.gzcp samba.schema /etc/ldap/schema

Editamos o ficheiro /etc/ldap/slapd.conf e engadimos dúas liñas como:

include /etc/ldap/schema/samba.schema
include /etc/ldap/schema/misc.schema

E despois reiniciamos o slapd:

invoke-rd.d slapd restart

Para facilitar o traballo de poboar a árbore de LDAP, empregamos a ferramenta web phpldapadmin. Entramos dende un navegador web ao url: http://localhost/phpldapadmin. Os datos de validación serán os que puxeramos durante a configuración de LDAP. Se o dominio fora exemplo.org, entón o usuario/a de login sería: “cn=admin,dc=exemplo,dc=org”.

Na raíz da árbore, temos que crear tres Unidades Organizativas, chamadas “users”, “machines” e “groups”. Temos que editar o ficheiro /etc/samba/smb.conf, para deixalo semellante ao seguinte:

[global]
workgroup = exemplo
netbios name = pdc
server string = Servidor Exemplo version %v
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF=8192 SO_RCVBUF=8192
os level = 65
preferred master = yes
local master = yes
domain master = yes
domain logons = yes
security = user
guest ok = no
encrypt passwords = yes
null passwords = no
hosts allow = 127.0.0.1 192.168.0.0/255.255.255.0
wins support = yes
name resolve order = wins lmhosts host bcast
dns proxy = no
log file = /var/log/samba/log.%m
log level = 2
max log size = 50
hide unreadable = yes
hide dot files = yes
passdb backend = ldapsam:ldap://127.0.0.1
ldap suffix = dc=exemplo,dc=org
ldap machine suffix = ou=machines
ldap user suffix = ou=users
ldap group suffix = ou=groups
ldap admin dn = cn=admin,dc=exemplo,dc=org
ldap delete dn = no
enable privileges = yes
ldap password sync = yes
logon home = \\%L\%U\.profile
logon drive = H:
logon path = \\%L\profiles\%U
logon script = netlogon.bat OR %U.bat
add machine script = /usr/sbin/smbldap-useradd -w "%u"
unix charset = ISO8859-15
[netlogon]
path = /home/samba/netlogon
guest ok = no
read only = yes
browseable = no
[homes]
path = /home/%U
comment = HOME dos usuarios
browseable = no
writeable = yes
valid users = %S
read only = no
guest ok = no
inherit permissions = yes
[profiles]
path = /home/samba/profiles
writeable = yes
browseable = no
default case = lower
preserve case = no
short preserve case = no
case sensitive = no
hide files = /desktop.ini/ntuser.ini/NTUSER.*/
create mask = 0600
directory mask = 0700
csc policy = disable

Con esta configuración o servidor Samba vai ter as mesmas capacidades que un Controlador Principal de Dominio (PDC) de Windows. Unha vez modificado, podemos probar a validez da sintaxe coa orde testparm. Creamos os directorios aos que se fai referencia no smb.conf: /home/samba/, /home/samba/netlogon/ e /home/samba/profiles/.

Samba ten que coñecer o contrasinal da persoa administradora de LDAP. Empregamos a orde smbpasswd -w xxxxxxx (substituíndo a serie de “x” polo contrasinal que puxeramos para o administrador de LDAP)

Despois de reiniciar Samba (invoke-rc.d samba restart), podemos ir ao phpldapadmin, e atoparemos unha nova entrada na árbore, relativa ao dominio NT. Algo semellante a:

sambaDomainName=EXEMPLO

Tamén tomamos nota do SID do dominio, para empregalo despois coas ferramentas smbldap.

Agora temos que crear os grupos de persoas usuarias: no phpldapamin abrimos a unidade organizativa “groups” e dentro dela creamos os seguintes “Samba3 Group Mapping”: “sambaadmins”, “sambausers”, “sambaguests” e “sambamachines”.

A continuación imos habilitar a autenticación baseada en LDAP. Primeiro instalamos o paquete libnss-ldap, e respondemos ás preguntas:

URI do servidor LDAP : ldapi://127.0.0.1Nome distintivo (DN) : dc=exemplo,dc=comVersión de LDAP a utilizar : 3Facer ao root local admin de LDAP: siÉ necesario un usuario para acceder ao ldap: NonConta ldap para root : cn=admin,dc=exemplo,dc=comContrasinal do admin LDAP: (a mesma que usamos na configuración de LDAP)

Editamos o ficheiro /etc/nsswitch.conf, e cambiamos as liñas:

passwd: compatgroup: compatshadow: compat

por estoutras:

passwd: compat ldapgroup: compat ldapshadow: compat ldap

Editamos o ficheiro /etc/pam.d/common-account, e substituímos a liña que ten por estas dúas:

account sufficient pam_ldap.soaccount required pam_unix.so try_first_pass

Editamos o ficheiro /etc/pam.d/common-auth, e substituímos a liña “auth requisite” por estas dúas:

auth sufficient pam_ldap.soauth required pam_unix.so nullok_secure use_first_pass

Editamos o ficheiro /etc/pam.d/common-password, e engadimos ao final:

password sufficient pam_ldap.sopassword required pam_unix.so nullok obscure min=4 max=8 md5 use_first_pass

Instalamos o paquete nscd, que se vai encargar de facer unha caché das solicitudes de autorización.

apt-get install nscd

O seguinte é crear os usuarios dende o phpldapadmin. Para iso imos á unidade organizativa “users”, e nela creamos novos obxectos do tipo “Samba3 Account”. Unha vez creados, podemos verificar que son visíbeis para o sistema coa orde:

getent passwd

E xa temos un sistema funcional. Agora sería preciso configurar as máquinas Windows para entraren no dominio, e empregar nelas os usuarios antes creados.

Licenza desta guía

Esta guía forma parte da documentación de apoio para a capacitación TIC en SwL e foi elaborada pola empresa TEGNIX para o Centro de Referencia e Servizos de Software Libre de Galiza – Mancomún. Distribúese baixo as condicións dunha Licenza Creative Commons: Recoñecemento-CompartirIgual 3.0