Hola, somos Tolu Igbon y Paula Tomás. Hace unos días tuvimos un caso en el que se utilizaba un script para realizar una consulta LDAP (utilizando el proveedor LDAP y determinar los miembros del grupo Domain Admins. Este script devolvía únicamente parte de los miembros del grupo, mientras que, a través de la consola de Usuarios y Equipos de Directorio Activo (dsa.msc) se obtenía un número mayor de miembros (la totalidad de ellos).

Se observó que la misma consulta en otro script que utilizaba el proveedor WinNT sí devolvía efectivamente todos los miembros del grupo Domain Admins, así como también los devolvía la ejecución del comando Net Group “Domain Admins”

Sin embargo, tanto ADSIEdit como LDP.EXE devolvían resultados parciales iguales a los que se recibían utilizando el script con el proveedor LDAP.

Ejecutamos el comando LDIFDE para obtener un volcado completo del contenedor USERS del dominio donde residen nuestros usuarios y grupos:

LDIFDE –d “CN=Users,DC=Nombredominio,DC=com” –f ARCHIVOSALIDA.TXT

En el archivo de salida vimos que, de nuevo, sólo aparecía parte de los usuarios en el atributo member del grupo Domain Admins.

dn: CN=Domain Admins,CN=Users,DC=Dominio,DC=com

changetype: add

objectClass: top

objectClass: group

cn: Domain Admins

description: Designated administrators of the domain

member: CN=User1,CN=Users, DC=Dominio,DC=com

member: CN=User2,CN=Users, DC=Dominio,DC=com

member: CN=User3,CN=Users, DC=Dominio,DC=com

member: CN=User4,CN=Users, DC=Dominio,DC=com

Posteriormente, comparamos los atributos de los usuarios que SÍ aparecían como miembros del grupo Domain Admins con los de los usuarios que NO aparecían.

Averiguamos que los usuarios que no aparecían tenían el atributo PrimaryGroupID establecido a 512. Este valor corresponde al grupo “Domain Admins”.

dn: CN=User5,CN=Users, DC=Dominio,DC=com

changetype: add

objectClass: top

objectClass: person

objectClass: organizationalPerson

objectClass: user

…………………………….

memberOf: CN=Enterprise Admins,CN=Users, DC=Dominio,DC=com

memberOf: CN=Administrators,CN=Users, DC=Dominio,DC=com

…………………………

primaryGroupID: 512

Sin embargo, los demás usuarios que aparecían como miembros del grupo “Domain Admins” tenían el atributo PrimaryGroupID establecido a 513, correspondiente al grupo “Domain Users”.

dn: CN=User1,CN=Users, DC=Dominio,DC=com

changetype: add

objectClass: top

objectClass: person

objectClass: organizationalPerson

objectClass: user

…………………………….

memberOf: CN=Group1,CN=Users, DC=Dominio,DC=com

memberOf: CN=Domain Admins,CN=Users, DC=Dominio,DC=com

…………………………

primaryGroupID: 513

Este comportamiento es por diseño, y aparece descrito en el siguiente artículo:

275523  Setting Primary Group Excludes the User from the Group Membership in Active Directory http://support.microsoft.com/default.aspx?scid=kb;EN-US;275523

A traves de LDAP/ADSI, un usuario no aparece como memberOf (miembro de) su grupo primario. Dicho grupo tampoco muestra los member (miembros) que lo tengan como grupo primario.

Del mismo modo, y por diseño, los usuarios no aparecen como miembros del grupo “Domain Users”, al ser éste el grupo primario de la mayoría de los usuarios por defecto.

Para que los usuarios deseados aparezcan como miembros del grupo “Domain Admins” a través de ADSI/LDAP, hay que cambiar su grupo primario a través de la consola Usuarios y Equipos de Directorio Activo y establecerlo a “Domain Users”, por ejemplo.

Se puede encontrar más información en los siguientes artículos de KB:

321360  How to use native ADSI components to find the primary group http://support.microsoft.com/default.aspx?scid=kb;EN-US;321360

297951 How to use the PrimaryGroupID attribute to find the primary group for a user http://support.microsoft.com/default.aspx?scid=kb;EN-US;297951

Esperamos que os haya resultado interesante.

- Tolu Igbon && Paula Tomás Galed