Mi Web 

Instalación de ldap – Samba.

Introducción

Aquellos Linuxeros que tenemos la suerte o la desgracia de tener que trabajar habitualmente con Windows, nos vemos en la necesidad de configurar prioritariamente Samba. Samba nos ofrece conectividad Linux vs Windows de una manera eficiente.

Si lo que se quiere es montar un pequeño servidor departamental o destinado a una PYME, basado en Linux, y sustituir con él los Windows Servers que hubiera en la red, muchas veces resulta muy molesto andar añadiendo usuarios al sistema (/etc/passwd) para cada los usuarios del dominio y los clientes Windows. Para evitar este molesto efecto colateral, la mejor opción de la que disponemos es de OpenLDAP integrado con Samba.

Este documento describe cómo instalar y configurar OpenLDAP y Samba 3, como servidor de ficheros e impresión (CPUS) sobre Debian Woody 3.

Los documentos en los que me basé para llevarlo a cabo, fueron los siguientes

Instalando paquetes

Lo primero, sería añadir a /etc/apt/sources.list, como usuario root:

#-Samba 3
deb http://www.backports.org/debian stable samba

... y luego ejecutar ...

apt-get update
apt-get install samba samba-doc \
                ldap-server ldap-utils \
                libpam-ldap libnss-ldap \
                libnet-ldap-perl nscd 

darle unos minutillos hasta que descargue todo.

Respondiendo a debConf

Una vez haya terminado de copiar paquetes, debconf empezará a interrogarnos para que le indiquemos cómo configurar el montón de cosas que ha descargado. Procederemos de la siguiente forma.

Configurando los diferentes servicios

Una vez hemos terminado de instalar y configurar los paquetes descargados, empezaremos a configurar uno a uno los diferentes servicios, y siempre como usuario root.

El demonio de OpenLDAP

Lo primero que se hará será añadir el schema de Samba a OpenLDAP. Para ello:

 
su -
cd /etc/ldap/schema
cp /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz .
gunzip samba.schema.gz
    

Una vez hecho esto, se editará el fichero /etc/ldap/slapd.conf y añadiremos la siguiente línea junto a los otros includes:

include     /etc/ldap/schema/samba.schema

Dentro de este mismo fichero, ir a la sección "# Indexing options" y sustituir la línea similar a la siguiente...

 index objectClass eq 

...por las siguientes ...

 
index objectClass,uid,uidNumber,gidNumber eq
index cn,mail,surname,givenName eq,subinitial
    

con ello estaremos diciendo a slapd que genere índices en la base de datos, para los atributos mencionados: ello repercutirá en velocidad en las consultas. Guardamos los cambios y salimos de la edición del fichero.

Se reiniciará el servicio y regenerarán los índices, mediante:

 
/etc/init.d/slapd stop
slapindex
/etc/init.d/slapd start
    

Ahora deberíamos tener abierto el puerto TCP 389, lo cual nos indicará que está arriba el servicio de Ldap. Se puede comprobar mediante nmap localhost o el comando netstat.

Primera copia de seguridad

En este momento, se supone que ya se tiene configurado el servicio de Directorio. Antes de continuar, convendría tener los archivos que conforman la base de datos del directorio, en una copia de respaldo, para poder volver atrás en cualquier momento, si bien, siempre podremos volver a empezar con dpkg-reconfigure libnss-ldap. Si queremos tener copia de seguridad, podremos teclear ...

cp -R /var/lib/ldap  ~/var_lib_ldap_incial

Estructura inicial del árbol

Dado que el objetivo será configurar el servicio Samba para que se autentique contra el servicio de directorio, se crearán los siguientes contenedores iniciales, por guardar un poco la similitud a como lo hace Active Directory:

  • Grupos: Contenedor de los Grupos de cuentas de usuario de Samba; En Active Directory sería el conjunto de los grupos globales.

  • Gente: Contenedor para almacenar las diferentes cuentas de usuarios; En Active Directory serían el conjunto de usuarios del dominio.

  • Equipos: Contenedor para albergar las cuentas de acceso asociadas a cada una de las estaciones de trabajo clientes, de nuestro futuro dominio Samba; En Active Directory sería equivalente a la colección Computers.

Para ello, creamos un archivo ~/mi-active-base.ldif con el siguiente contenido.

 
dn: ou=Grupos,dc=adesx,dc=com
objectClass: top
objectClass: organizationalUnit
ou: Grupos
    
dn: ou=Gente,dc=adesx,dc=com
objectClass: top
objectClass: organizationalUnit
ou: Gente
    
dn: ou=Equipos,dc=adesx,dc=com
objectClass: top
objectClass: organizationalUnit
ou: Equipos
    

No estaría demás que se dejara una copia de este archivo en /etc/ldap, con el fín de tener por duplicado y centralizada esta configuración post-inicial. Estando arrancado el servicio de de ldap, ejecutamos...

 
ldapadd -x -h localhost -D "cn=admin,dc=adesx,dc=com" -f base.ldif -W
Enter LDAP Password:
adding new entry "ou=Grupos,dc=adesx,dc=com"
adding new entry "ou=Gente,dc=adesx,dc=com"
adding new entry "ou=Equipos,dc=adesx,dc=com"
    

Explorando nuestro directorio

Llegado este momento ya estaríamos en condiciones de poder curiosear entre los objetos de nuestro directorio. Para ello, necesitaremos de un explorador de LDAP. Aunque no he ahondado mucho en Google, encontré 2 herramientas:

  • http://www.maxware.com/download/?code=1083491880, cliente para Windows que se integra con el escritorio, de la misma manera que el entorno de red. Se puede descargar la versión de evaluación para 30 días: cuando nos solicite la dirección de correo, indicaremos ibarrancos@exagroup.com

  • Ldap Viewer, cliente para java para Linux, que no recuerdo la Url, ni la tengo localizada.

Para ilustrar este documento usaremos el cliente de Maxware, desde una estación Windows. Si accedemos en el explorador de Windows a la pestaña de arriba (barra de direcciones) y le pinchamos al combo, veremos como más abajo del escritorio, y del entorno de red, aparece una entrada llamada maxware. Pinchamos en ella, y luego en "add directory server" . Los parámetros serán los siguientes:

  • En la pestaña de Server:

    • Server name: helicon (sólo es el nombre que queremos darle a esta configuración)

    • Server addres: 192.168.1.20 (la dirección IP del servidor donde hemos montado LDAP)

    • LDAP version: 3 (está claro, así lo dejamos configurado con debconf)

    • Port number: Default (para que use el puerto por defecto, el 389)

  • En la pestaña de Login, marcar la opción Explicit, y luego en el resto de campos poner...

    • Login user name: cn=admin,dc=adesx,dc=com (será la cadena que identifique la cuenta del administrador del árbol)

    • Login passowrd: Teclearemos la contraseña del administrador del árbol, presumiblemente la del root.

    • Security options: Simple

  • En la pestaña de Directory...

    • Start node (DN): dc=adesx,dc=com (será el raíz de nuestro árbol)

    • Search filter: (objectclass=*).

    • Max. entries to return, Timeout, Entries per page: Dejar todos con el valor de 50.

  • En la pestaña de Advanced dejar las opciones por defecto.

Luego pulsar los botones de "Aplicar" y "Aceptar" . Una vez se cierre la ventana, si hacemos doble click sobre helicon (el servidor de ldap que se ha instalado y configurado, veremos cómo ya aparecen los objetos que se acaban de crear).

Aquellos objetos que no creamos y que aparecen (People, y Roaming), será porque le dijimos a debconf que creara el árbol automáticamente y no mediante ldif de manera manual.

El cliente linux de OpenLDAP

En este punto de la instalación se debe configurar el cliente OpenLDAP para que acceda al directorio LDAP que se acaba de crear: Esto se necesitará cuando debamos configurar libpam más tarde.

Para ello, editar el archivo /etc/ldap/ldap.conf y añadir las siguientes líneas:

 
HOST 127.0.0.1
BASE dc=adesx,dc=com
    

Se podrá testear la conexion mediante

ldapsearch  -x

Ahora se editará el fichero /etc/nsswitch.conf, y nos aseguraremos de añadir a las líneas passwd,group y shadow la entrada para ldap, quedando algo similar a lo siguiente:

 
passwd: ldap compat
group: ldap compat
shadow: ldap compat
    

Instalando y personalizando los comandos de Idealx

Idealx es una empresa francesa destinada a la venta servicios basados en Open Source, que cuenta entre sus principales clientes a varios ministerios del gobierno francés, Leroy-Merlyn, Alcatel o Canal Plus Francia. Entre otras aportaciones a la comunidad, se encuentra el SMB-LDAP PDC Howto que describe cómo configurar Samba2 con Ldap para convertirlo en un PDC.

Con el fín de facilitar la administración del conjunto, implementaron un conjunto de scripts perl que interactuaban con Ldap, para crear los objetos del dominio Samba. La persona que mantiene el backport de Samba3 para Woody, tuvo la genial idea de incluirlos en el mismo, con lo que no tendremos que descargarlos de manera separada. Para ello...

 
cd /usr/local/sbin
cp /usr/share/doc/samba-doc/examples/LDAP/smbldap-tools/*.p*.gz .
cp /usr/share/doc/samba-doc/examples/LDAP/smbldap-tools/*.pl .
gunzip *.gz
chmod u+x smbldap*pl
    

Ahora necesitaremos compilamos el comando mkntpwd.

 
cd /usr/share/doc/samba-doc/examples/LDAP/smbldap-tools/mkntpwd
gunzip *.gz
make
cp mkntpwd /usr/local/sbin
chmod u+x /usr/local/sbin/mkntpwd
    

Cuando una persona trabaja en la administración de Windows (la verdad es que no hay mucho que administrar, lo más complicado suele ser pulsar el botón de reset, que nunca terminas de atreverte porque dudas si arrancará el equipo o no), termina acostumbrándose a la jerga: La palabra SID aparece hasta la infinidad cuando se habla de dominios, Active Directory y relaciones de confianza. SID es el abrevio de Security IDentifier y es un pedazo de chorizo que los productos Microsoft (TM) utilizan para identificar objetos de manera única. Cuando se están configurando redes Microsoft (TM), cada equipo de la red, cada cuenta de usuario, cada grupo, etc, etc... tiene asociado un SID diferente, sobre el que se definen el resto de permisos, privilegios, etc, etc... en los registros de los controladores de dominio, PDCs, e incluso en los de los equipos clientes. Es por ello, que nuestro propio servidor Samba tendrá un SID asociado, y necesitamos conocerlo para configurar los scripts perl de Idealx. Para ello, ejecute como root:

 
helicon:~# net getlocalsid
SID for domain HELICON is: S-1-5-21-1583388958-2540867174-1836719564
    

No teclear la segunda línea: Esta será el resultado de ejecutar la primera, y nos mostrará el SID de nuestro servidor: Tomaremos nota de él.

Ahora editaremos el archivo /usr/local/sbin/smbldap_conf.pm, e iremos buscando cada una de las líneas donde se definen las siguientes variables, y sustituyéndolas por su valor, o por el valor que se propone a continuación.

 
$SID = "S-1-5-21-1583388958-2540867174-1836719564";
    

Está claro que aquí pondremos el SID resultante de haber ejecutado net getlocalsid. Seguimos sustituyendo valores de variables...

 
$suffix = "dc=adesx,dc=com"
$usersou = q(Gente);
$computersou = q(Equipos);
$groupsou = q(Grupos);
$hash_encrypt="CRYPT";
$binddn = "cn=admin,$suffix";
$bindpasswd = "XXXXX";
    

En vez de XXXXX habrá que poner la contraseña del administrador de Openldap en claro (la del root). Seguimos cambiando valores de variables:

 
$_userLoginShell = q(/bin/bash);
$_userHomePrefix = q(/home/samba);
    

Le pongo este directorio, porque como enseguida veremos, colgaré todo lo referente a samba (perfiles, buzones compartidos, directorios personales, drivers para impresoras, netlogon, etc...) a partir del directorio /home/samba. Seguimos actualizando las variables del fichero /usr/local/sbin/smbldap_conf.pm ...

 
$_defaultUserGid = 221;
$_defaultComputerGid = 300;
    

No lo tengo nada claro la relevancia de estos IDs. En principio los he dejado así, y no he tenido ningún problema.

Configuración de Samba 3

Ya estamos casi terminando. Ahora crearemos los directorios donde dejaremos todo los directorios que formarán parte de nuestro dominio. Como ya se adelantó, se dejarán todos a partir de /home/samba. Para ello,

 
mkdir -p -m 777 /home/samba/var
cd /home/samba/var
mkdir -p -m 777 comun netlogon perfiles print-drivers
    

El objetivo de cada directorio es ...

Ahora se crearán los grupos iniciales de nuestro dominio, en plan Windows 2000. No tenemos porqué usar los nombres en inglés, pero deberíamos ser consecuentes con UID y GID que configuramos en /usr/local/sbin/smbldap_conf.pm,

    
smbldap-groupadd.pl -a -g 200 "Domain Admins"
smbldap-groupadd.pl -a -g 201 "Domain Users"
smbldap-groupadd.pl -a -g 202 "Domain Guests"
smbldap-groupadd.pl -a -g 220 "Administrators"
smbldap-groupadd.pl -a -g 221 "NT Users"
smbldap-groupadd.pl -a -g 222 "Guests"
smbldap-groupadd.pl -a -g 223 "Power Users"
smbldap-groupadd.pl -a -g 224 "Account operators"
smbldap-groupadd.pl -a -g 225 "Server operators"
smbldap-groupadd.pl -a -g 226 "Print operators"
smbldap-groupadd.pl -a -g 227 "Backup operators"
smbldap-groupadd.pl -a -g 228 "Replicator"
smbldap-groupadd.pl -a -g 300 "Hosts"

Como se puede ver, la ejecución de los comandos anteriores no ha modificado para nada el fichero /etc/group. También podemos echarle un vistazo al explorador del directorio (maxware) y observar cómo ha metido los grupos en el contenedor de Grupos. Se nos va a quedar una cosa guapa, guapa, guapa.

El fichero de samba: smb.conf

Ahora se debe editar el fichero de configuración de samba. Antes de hacer nada, deberíamos sacarle copia de seguridad al original, no vaya a ser que ...

cp /etc/samba/smb.conf  /etc/samba/smb.conf-original

y editamos el archivo /etc/samba/smb.conf para dejar todo este contenido. (He añadido comentarios para que quede más entendible:

   
#- Creado el 2/Mayo/2004, para ver como pitaba con OpenLadap.

#======================= Global Settings =======================

[global]

   # Nombre del dominio NT
   workgroup = adesx 

   # Descripcion del equipo. Este se ve cuando estamos en el 
   # entorno de red de Windows, con la vista de carpeta en 
   # detalles.
   #  Los parametros son: 
   #    %h = Nombre del host
   #    %v = La version instalada de samba.
   server string = Servidor %h (Samba %v)

   # Hace que el demonio NMBD haga de servidor Wins.
   wins support = yes

   # Lo dejamos comentado, porque esto es para decirle a Samba que
   # su servidor Wins esta en otro equipo. Se supone que aqui se le
   # mete la IP del servidor Wins. Pasamos, porque al ser propio 
   # servidor, el que haga las veces de Wins, no se tiene que poner.
;   wins server = w.x.y.z

   # Esto es por si se recibiera el servidor Wins por el DHCP. Se deja
   # comentado porque no lo vamos a recibir por DHCP... Si somos nosotros!!
;   include = /etc/samba/dhcp.conf

   # Esto se supone que es para decirle al demonio nmdb que busque los
   # los nombres NetBIOS en DNS. De momento nos olvidamos de ello, que 
   # los busque escuchando los broadcast de los Windows.
   dns proxy = no

   # Esto le dice a samba en que orden debe resolver la IP de los nombres 
   # de los equipos. Por defecto viene comentado, yo lo descomento. 
   name resolve order = lmhosts host wins bcast

#### Depurando problemas   ####

   # Le decimos que use logs diferentes para cada Cliente. Esto es 
   # preferible cuando no se sabe muy bien, que va a pasar... asi
   # se puede ver lo que hace una maquina Windows 95 y una XP.
   log file = /var/log/samba/log.%m

   # Maxima capacidad (en Kb) del archivo de Log.
   max log size = 1000

   # Si queremos que samba solo tire logs en /var/log/messages. Lo dejo
   # como viene por defecto en la instalacion de Debian. 
;   syslog only = no

   # Cuanta informacion en log quieres. Cuanto mayor sea el numero mas 
   # informacion sacara en el log.
   syslog = 10

   # Para cuando pete samba. Lo dejo como viene por defecto para Debian.
   panic action = /usr/share/samba/panic-action %d


####### Autenticacion #######

   # Hay diferentes tipos de niveles de seguridad. Esta es la que de 
   # momento usaremos. 
   security = user

# You may wish to use password encryption.  See the section on
# 'encrypt passwords' in the smb.conf(5) manpage before enabling.
   # Lo dejo como viene por defecto. Creo que esto da problemas con 
   # Windows 95, 98 y NT Service Pack 3 (y anteriores). El resto por
   # defecto envian las contraseñas encriptadas, pero se les puede 
   # tocar en el registro para que las envien en claro.
   # Si hubiera estaciones Windows 95/98 habria que plantearse esto.
   encrypt passwords = true

   # Esto es para que busque en LDAP.
   passdb backend = ldapsam:ldap://127.0.0.1 

   # No tengo ni idea de lo que hace, pero lo dejo a no, porque lo
   # vi en un tutorial para configurar LDAP y Samba.
   obey pam restrictions = no

   # Lo dejo por defecto como viene en Debian. No me complico.
;   guest account = nobody
   invalid users = root

   # Esto es para el sincronismo de contraseña. Lo dejo tal cual lo vi en
   # un tutorial de SAMBA y LDAP.
;   unix password sync = yes
   passwd program = /usr/local/sbin/smbldap-passwd.pl -o %u
   passwd chat = *new*password* %n\n *new*password* %n\n *successfully*


   # Lo dejo por defecto como viene en Debian. No me complico.
;   pam password change = no

########## Opciones para LDAP  ##########

   # Parametros para LDAP 
   ldap suffix = dc=adesx,dc=com
   ldap admin dn = cn=admin,dc=adesx,dc=com
   ldap ssl = no
   ldap user suffix = ou=Gente
   ldap group suffix = ou=Grupos
   ldap machine suffix = ou=Equipos

########## Opciones para convertir Samba en PDC  ##########
   
   # Esto lo dice a los Windows que es un PDC, que se anden con 
   # cuidao.
   os level = 33
   preferred master = yes
   domain master = yes
   local master = yes
   domain logons = yes

   # Para que los PCS se añadan automaticamente
   add machine script = /usr/local/sbin/smbldap-useradd.pl -w -d /dev/null -s /bin/false %u

   # Donde se almacenan los perfiles
   #--- Propuesto por el tutorial
;   logon path = \\%N\Profiles\%u 
   #--- Hecho para el Pelluz %U= Usuario que hace logon, %a=Tipo de Windows
   logon path = \\%L\Profiles\%U\%a

   # Unidad mapeada temporalmente por los usuarios mientras ejecutan
   # el script de logon
   logon drive = Y:
   
   # Script de Logon que ejecutara el usuario: El script se llamará igual que
   # el usuario.
   logon home = %u.bat

########## Impresion (servida por CUPS)  ##########

   # Le decimos a samba que si, que vamos a imprimir.
   load printers = yes

   # Que lo vamos hacer con CUPS.
   printing = cups
   printcap name = cups

   # Como consultar el estado de las impresoras e imprimir.
   lpq command = lpstat.cups -o %p
   lprm command = lprm.cups  %p-%j

   # No tengo ni idea. Lo dejo tal cual lo pone el debconf
;   printer admin = @ntadmin


########  Opciones para los nombres de ficheros  ########

   # Esto me dio problemas con Windows 95/98 y Samba 3 en
   # el Pelluz: Los nombres de los archivos quedaban hechos
   # una patata.
;   dos charset = ANSI
   unix charset = ISO-8859-1

   # Lo dejo como lo deja debconf. 
;   preserve case = yes
;   short preserve case = yes


############ Miscelanea ############

   # Se supone que esto es para que cada cliente Windows tenga una 
   # configuracion# personalizada. Paso de esto.
;   include = /home/samba/etc/smb.conf.%m

   # Opciones para los sockets. Lo dejo como viene por defecto
   # con debconf. 
   socket options = TCP_NODELAY
   #--- En el Pelluz tenia...
;   socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

   # Esto es para que funcionen los mensajitos de WindowsPopup. Necesita
   # el paquete linpopup, pero de momento paso de el. Lo tengo que 
   # probar, porque algun vez me ha hecho falta, sobre todo para avisar
   # a los usuarios antes de reinciar el servidor.
;   message command = /bin/sh -c '/usr/bin/linpopup "%f" "%m" %s; rm %s' &

   # Opciones de Winbind. No tengo ni idea de lo que es. No lo toco, y
   # lo dejo como lo pone debconf.
;   idmap uid = 10000-20000
;   idmap gid = 10000-20000
;   template shell = /bin/bash

#======================= Share Definitions =======================

[homes]
   # Comentario de lo que aparecera en el entorno de red de Windows.
   comment = Carpeta personal de %U
   path = /home/samba/%U

   browseable = yes
   writable = yes
   create mask = 0700
   directory mask = 0700

[netlogon]
   # Donde se ponen los scripts de Logon.
   comment = Servicio de Logon
   path = /home/samba/var/netlogon
   
   guest ok = yes
   writable = no
   locking = no
   public = no
   browseable = yes
   share modes = no
   public=no

[printers]
   # Carpeta de las impresoras del servidor.
   comment = Servidor de Impresion
   path = /tmp
   browseable = no
   guest ok = yes
   writable = no
   printable = yes
;   print ok = yes
;   use client drivers = yes
;   create mode = 0700

[print$]
   # Recurso con los drivers de las impresoras. No he conseguido
   # que funcione bien con Windows 95/98, con XP si, pero añadiendo
   # los drivers desde XP, no desde el Linux. Era un rollazo fuerte.
   comment = Drivers de Impresion 
   path = /home/samba/var/print-drivers
   browseable = yes
   read only = no
   guest ok = yes

;   write list = root, @ntadmin

[Profiles]
   comment = Unidad con los perfiles de red
   path=/home/samba/var/perfiles
   create mode = 0600
   csc policy = disable
   directory mode = 0700
   profile acls = yes
   read only = no

[comun]   
   comment = Unidad de red comun a todos
   path=/home/samba/var/comun 
   browseable = yes
   writable = yes
   readonly = no
   force create mode = 0777
   create mode = 0777
   force directory mode = 0777
   directory mode = 0777

Se podrán comprobar los parámetros del archivo de configuración de samba, mediante:

testparm -v

Ahora se debe fijar a Samba la contraseña del administrador del LDAP :

smbpasswd -w XXXXX

donde XXXXX se sustituirá por la contraseña del Admin del LDAP. Ahora se creará la cuenta del administrador del dominio...

   
smbldap-useradd.pl -a -m administrador
smbldap-usermod.pl -u 0 administrador
smbldap-passwd.pl administrador

Como contraseña he puesto "pokemon" . Puede ser que para añadir equipos al dominio haga falta poner la clave del administrador del dominio, por eso no pongo la del administrador del LDAP.

Encriptando contraseñas

Para codificar claves en forma {CRYPT}, podemos usar el suiguiente programita en perl:

   
#!/usr/bin/perl
$a= crypt("pokemon","gq");
print "Clave : $a \n";

donde "pokemon" es la contraseña a encriptar.

Configurando libnss-ldap

Esta librería permite decirle a Linux cómo encontrar cuentas de acceso en LDAP, algo parecido a nslookup en dns, pero con cuentas usuarios en ldap. Para ello, necesitaremos de una cuenta especial en el directorio, que llamaremos nss. Lo primero será crearnos el archivo /etc/ldap/nss.ldif con el siguiente contenido ...

 
dn: cn=nss,dc=adesx,dc=com
objectClass: organizationalRole
objectClass: simpleSecurityObject
cn: nss
description: Cuenta de usuario para user-lookups
userPassword: {CRYPT}gq9a.KazGGQkI

La clave que aparece ahí es "pokemon" , (resultado de haber ejecutado el script perl que se ha descrito líneas más arriba). Ahora importamos la cuenta en el directorio...

ldapadd -x -h localhost -D "cn=admin,dc=adesx,dc=com" -f nss.ldif -W

y ponemos la clave del administrador del Directorio. Después, nos aseguramos de que el archivo /etc/libnss-ldap.conf tenga estas líneas :

 
host 127.0.0.1
base ou=Gente,dc=adesx,dc=com
uri ldap://127.0.0.1/
ldap_version 3
    
binddn cn=nss,dc=adesx,dc=com
bindpw pokemon
    
nss_base_passwd ou=Gente,dc=adesx,dc=com
nss_base_group ou=Grupos,dc=adesx,dc=com
    
pam_password crypt

Configurando pam

Ahora toca la hora de configurar pam, que es el módulo que gestiona de manera centralizada la autenticación de los diferentes servicios que se ejecutan en nuestro Linux. Para ello, editaremos el fichero /etc/pam_ldap.conf y nos aseguramos de que tenga:

 
host 127.0.0.1
base dc=adesx,dc=com
uri ldap://127.0.0.1/
ldap_version 3
binddn cn=nss,dc=adesx,dc=com
bindpw pokemon
rootbinddn cn=admin,dc=adesx,dc=com
pam_password crypt

y en el fichero /etc/ldap.secret pondremos la contraseña del administrador del directorio (en claro). Asegurarse que el archivo tiene sólo permisos 600.

Ahora se editará el archivo /etc/pam.d/samba, y se añadirá en todas secciones el módulo ldap (líneas donde aparece pam_ldap.so ). Al final quedará algo así (el orden es importante, respetarlo):

 
auth sufficient pam_ldap.so
auth required pam_unix.so nullok

account sufficient pam_ldap.so
account required pam_unix.so

session sufficient pam_ldap.so
session required pam_unix.so

password sufficient pam_ldap.so
password required pam_unix.so

También editaremos el fichero /etc/pam.d/password y dejaremos algo así:

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

Sólo nos quedará reiniciar el servicio de samba, y empezar a probar ...

/etc/init.d/samba restart

Conclusiones y TODO

Este mini-howto está aún inacabado, porque aún me queda cómo documentar:

La mayoría de cosas las tengo hechas (excepto la última), pero no tengo mucho tiempo de documentar. Ahorá sólo quedará recordar cómo manejarse básicamente con las cuentas de usuario y cuentas para las estaciones de trabajo

>ignacio-barrancos.dnsalias.net
Usuario Linux Registrado: 354313