Arquivo do mês: novembro 2013

389/RHDS memberOf plugin

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/