[LUG.ro] Problemas con nss y ldap

Omar Arino lugro@lugro.org.ar
Thu, 10 Aug 2006 13:56:52 -0300


Hola amigos listeros. Despues de mucho renegar logré detectar en donde estaba
fallando la autenticación de usuarios contra un servidor (local) ldap. El tema en
cuestión es el siguiente:

Distribución: OpenSuse 10.1
Paquetes instalados:

pam_ldap-180-13
nss_ldap-246-14
openldap2-client-2.3.19-18
ldapcpplib-0.0.4-14
nss_ldap-246-14
openldap2-2.3.19-18.3
yast2-ldap-2.13.4-8
yast2-ldap-client-2.13.13-6

El servidor OpenLDAP esta configurado para que escuche todas las interfaces de
red en los puestos 389 (ldap) y 636 (ldaps). Verifico que el servidor ldap
funciona correctamente y a fin de verificar si el problema es de permisos de
acceso en la ACL solo esta abilitada la siguiente: "access to * by * read"

El comando "ldapsearch -x" funciona correctamente por lo que entiendo que no
sería problema de la configuración del servidor LDAP y de las reglas de accesos.

El arbol esta organizado de esta manera:

dc=omar
 |
 |-ou=People
 |  |
 |  |-uid=usuario
 |  |
 |  |- ...
 |-ou=Groups
 |  |
 |  |-cn=grupo
 |  |
 |  |- ...

La estructura de los nodos es la siguiente:

-------------------------------------------------------
dn:dc=omar
dc: omar
o: FAGDUT
objectClass: dcObject
objectClass: organization
objectClass: top
description: Omar

dn:ou=People,dc=omar
objectClass: organizationalUnit
ou: People

dn:ou=Groups,dc=omar
objectClass: organizationalUnit
ou: Groups

dn:uid=usuario1,ou=People,dc=omar
uid: usuario1
cn: usuario1
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {crypt}$1$EhaEhrwJ$CFv1M2ijZqgGvbuqWGXxe0
shadowLastChange: 12817
loginShell: /dev/null
uidNumber: 1023
gidNumber: 505
homeDirectory: /home/usuario1

dn:cn=prueba,ou=Groups,dc=omar
objectClass: posixGroup
objectClass: top
cn: prueba
userPassword: {crypt}x
gidNumber: 505
memberUid: usuario1

-------------------------------------

Ahora bien sigo dos métodos para hacer que autentique los usuarios contra el
servidor LDAP. 
1) Priemro hago que la distribución haga el proceso de configuración con la
herramienta YaST. Sigo los pasos descriptos en el siguiente link:

http://en.opensuse.org/Howto_setup_SUSE_10.1_as_Samba_PDC#OpenLDAP_Setup

A partir de este momento veo los usuario y puedo loguearme en una consola con
estos, pero al reiniciar la máquina el demonio DBUS deja de responder y no puedo
ingresar a la máquina con ningún usuario, ni siguiera como "root".

2) En este caso modifico los archivos a mano (son los mismo que modifica YaST).

nss_switch.conf

--------------------------------------------
#

passwd: compat
group:  compat

hosts:  files dns wins
networks:       files dns

services:       files ldap
protocols:      files
rpc:    files
ethers: files
netmasks:       files
netgroup:       files ldap
publickey:      files

bootparams:     files
automount:      files nis
aliases:        files ldap
passwd_compat:  ldap
#group_compat:  ldap

-----------------------------------

En este archivo opte como ultima alternatica comentar la linea "group_compat:
ldap" lo que permitio que se puede logear en la máquina ya se con los usuarios
locales y los usuario ldap.
Tambie probe las siguiente modificaciones con identico resultado:

a)
passwd: compat
group:  compat
passwd_compat:  files ldap
group_compat:  files ldap

b)
passwd: files ldap
group:  files ldap
#passwd_compat:  files ldap
#group_compat:  files ldap

==========================================

pam_unix2.conf

En este archivo modifico para que se utilice el servidor ldap:

------------------------------------------
auth:   use_ldap
account:        use_ldap
password:       use_ldap
session:        none

==========================================

ldap.conf

Agrego la cofiguración para que "nss_ldap" se conecte al servidor ldap:

------------------------------------------
host    127.0.0.1
base    dc=omar
#port   389
ldap_version    3
#ssl    start_tls
pam_password    crypt
pam_filter      objectclass=posixAccount
scope   sub
nss_base_passwd ou=People,dc=omar
nss_base_shadow ou=People,dc=omar
nss_base_group  ou=Groups,dc=omar
nss_map_attribute       member memberUid
ssl     no
===========================================

Bueno ahora bien el problema está en el mapeo de grupos ya que no logro mapear
estos  con el problema de que además no me permite ingresar con los usuarios
locales. 
Entre las tantas modificaciones que hice en estos archivos (inclusive en los de
la configuración parm - /etc/pam.d/common-* ) logre ingresar con los usarios
locales, pero no podía acceder a los dispositivos ya que el domenio dbus al
inicio cambia los permisos del directorio /var/run/dbus para que accede
messagebus.messagebus (usuario y grupo) y como no encuentra el grupo local
messagebus los restantes demonios y programas no pueden acceder al servicio.

Aclaro además que no es un problema de la creación de la estructur de grupos de
ldap, ya que probe utilizando las herramientas administrativas de YaST para crear
los grupos y tampoco funcionó.

Si alguien me puede dar una mano, gracias.

Omar Arino