Olá pessoal pra quem ainda não sabe o 389/Red Hat Directory Server (RHDS) tem o plugin “memberOf” (começando na versão Fedora DS 1.1.1, com grandes melhorias a partir de 389-DS 1.2.7, e desde o RHDS v8.1), que oferece a mesma funcionalidade como o recurso “memberOf” do Active Directory.
O plugin memberOf está desativado por padrão tanto no 389 quanto no RHDS. Uma vez ativado ele irá mostrar os valores de dn de todos os grupos como uma entrada no atributo memberOf. Ele funciona adicionando um atributo e o valor de entrada automaticamente, quando eles são adicionados a um grupo. Diferente da funcionalidade similar “isMemberOf” da última versão do Sun/Oracle Directory Server Enterprise Edition, memberOf retorna como um atributo de usuário padrão e, portanto, não precisa ser especificado explicitamente em uma pesquisa.
Pelo fato de ser um atributo standard, para adicionar o memberOf a uma entrada, pelo menos um objectclass deve ser incluido como um atributo permitido. O novo esquema 389/RHDS inclui a classe de objeto inetUsr, que permite memberOf.
[me@emyhost ~]$ ldapsearch -x -LLL -h localhost -D "cn=directory manager" -W -b "dc=example,dc=com" -s sub "uid=me" Enter LDAP Password: dn: uid=me,ou=People,dc=example,dc=com givenName: My sn: Test objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson objectClass: posixAccount objectClass: shadowAccount objectClass: inetUser uid: me * * * memberOf: cn=Directory Administrators,dc=example,dc=com memberOf: cn=Staff,ou=Groups,dc=example,dc=com memberOf: cn=Users,ou=Groups,dc=example,dc=com
Para ativar o plugin, usar o console gui ou simplesmente alterar o valor de “nsslapd-pluginEnabled” em “cn=memberOf Plugin, cn=plugins, cn=config” de “off” para “on”. Se o diretório usa “uniquemember” em vez de “membro” como o atributo de membro do grupo, a primeira entrada deve ser substituída por este último na “memberofgroupattr”. Aqui estão algumas LDIFs para fazer o trabalho (aplicar usando ldapmodify):
dn: cn=memberOf Plugin,cn=plugins,cn=config changetype: modify replace: nsslapd-pluginenabled: on - replace: memberofgroupattr memberofgroupattr: uniquemember
O plugin é então ativado após reiniciar o serviço de diretório.
Para modificar membros de grupos existentes (como um plugin do post-operation ele irá adicionar o atributo memberOf apenas para os membros do grupo recém-adicionados), o script de correção-memberof.pl está incluido. Ele pode ser encontrado em /usr/lib64/dirsrv/slapd-[nomedainstância]. A sintaxe fica assim:
fixup-memberof.pl -v -D "cn=directory manager" -w - -b "dc=example,dc=com"
O script funciona ajustando o memberOf task no diretório. Isso pode ser feito manualmente, adicionando a seguinte entrada:
dn: cn=example memberof,cn=memberof task,cn=tasks,cn=config objectclass: extensibleObject cn:example memberof basedn: ou=people,dc=example,dc=com filter: (objectclass=groupofuniquenames)
(use ldapadd, ou ldapmodify com o parametro “-a”)
Referência: http://onemoretech.wordpress.com/2011/11/23/389rhds-memberof-plugin/