He visto preguntas similares relacionadas con la configuración de Apache para autenticarse mediante LDAP, pero esta pregunta básica todavía me confunde.
En mi configuración, creé usuarios que tenían el mismo GID principal, luego agregué usuarios a varios grupos (suplementarios/secundarios). He probado estas cuentas de usuario y, en la mayoría de las situaciones, todo funciona bien: mis permisos basados en la membresía de un grupo complementario están funcionando. Utilicé el smbldap-tools
paquete para configurar mis usuarios y grupos, y específicamente solía smbldap-usermod -G +NEW_GROUP user
agregar usuarios a los grupos suplementarios.
Si lo hago, getent group
veo esos grupos suplementarios y sus miembros. Bien.
Si miro la entrada LDAP de uno de los grupos suplementarios, veo todos los usuarios enumerados tal como se esperaba.
Sin embargo,cuando miro la entrada LDAP de cada usuario, solo gidNumber
aparece la correspondiente al grupo principal. Es decir, las entradas LDAP para cada usuario solo enumeran el grupo principal y no mencionan los grupos secundarios.
¿Cómo maneja Samba/LDAP (usando smbldap-tools) grupos suplementarios/secundarios?
Además, ¿cómo podría formar un filtro de búsqueda para identificar miembros de un grupo complementario?
Respuesta1
LDAP es sólo un directorio de información. La forma en que se almacena y recupera esa información depende de la aplicación. En este caso, los usuarios y grupos posix se modelan a partir de los archivos /etc/passwd y /etc/group. Cada entrada de usuario enumera el gid de su grupo principal. Cada grupo enumera a todos sus miembros (generalmente menos los que lo enumeran como su grupo principal).
Samba y los diversos complementos nss para almacenar información de usuarios y grupos en LDAP realizan una búsqueda para encontrar los grupos de los que es miembro un usuario al iniciar sesión. El atributo memberUid debe indexarse para agilizar las búsquedas de membresía de grupos. Para una cuenta de usuario determinada, el filtro de búsqueda es algo como:
(&(objectclass=posixGroup)(memberUid=$user))
Si desea ver los usuarios de un grupo en particular, puede buscar con:
(&(objectclass=posixGroup)(cn=$group))
Esto supone que todos sus grupos son de la clase de objeto posixGroup.
Respuesta2
No soy un gran usuario de OpenLDAP, pero si se tratara de un entorno de Active Directory, usaría el atributo "memberOf" presente en cada objeto de cuenta de usuario. En el mundo OpenLDAP, parece elmiembro de superposiciónHará lo que estás buscando. Sospechoesta preguntale dirá lo que necesita saber para que esto funcione.