1
Access Control List (ACL) / Re: Доступ к userpassword[РЕШЕНО]
« : 15 Октябрь 2014, 07:23:43 »
Егор, большое Вам спасибо! Убрал правило {0} и всё заработало!
В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.
ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config '(olcAccess=*)' olcAccess olcSuffix
dn: olcDatabase={0}config,cn=config
olcAccess: {0}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external
,cn=auth manage by * break
dn: olcDatabase={1}monitor,cn=config
olcAccess: {0}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external
,cn=auth manage by * break
dn: olcDatabase={2}hdb,cn=config
olcSuffix: dc=energy,dc=kz
olcAccess: {0}to attrs=userPassword by self write by * auth
olcAccess: {1}to dn.subtree="ou=ellipseast,dc=energy,dc=kz" attrs=userPassword
by self write by dn.base="uid=ldapadminast,ou=staff,ou=ellipseast,dc=energy,
dc=kz" write by anonymous auth by * none
olcAccess: {2}to dn.subtree="ou=ellipseast,dc=energy,dc=kz" by dn.base="uid=ld
apadminast,ou=staff,ou=ellipseast,dc=energy,dc=kz" write by * read
olcAccess: {3}to dn.subtree="ou=ellipseskz,dc=energy,dc=kz" attrs=userPassword
by self write by dn.base="uid=ldapadminskz,ou=staff,ou=ellipseskz,dc=energy,
dc=kz" write by anonymous auth by * none
olcAccess: {4}to dn.subtree="ou=ellipseskz,dc=energy,dc=kz" by dn.base="uid=ld
apadminskz,ou=staff,ou=ellipseskz,dc=energy,dc=kz" write by * read
olcAccess: {5}to dn.subtree="ou=ellipsepe,dc=energy,dc=kz" attrs=userPassword
by self write by dn.base="uid=ldapadminpe,ou=staff,ou=ellipsepe,dc=energy,dc=
kz" write by anonymous auth by * none
olcAccess: {6}to dn.subtree="ou=ellipsepe,dc=energy,dc=kz" by dn.base="uid=lda
padminspe,ou=staff,ou=ellipsespe,dc=energy,dc=kz" write by * read
olcAccess: {7}to * by * read
В результате пользователи могут менять свои пароли, локальный админ может создавать, удалять пользователей в своей ветке, но не может менять пароль. Получается правило на доступ к атрибуту userPassword для локальных админов не работает, а к ветке в целом - работает. У меня это в голове не укладывается!
dn: dc=energy,dc=kz
objectClass: top
objectClass: dcObject
objectclass: organization
o: energy
dc: energy
dn: cn=ldaproot,dc=energy,dc=kz
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: ldaproot
userPassword: xxxxxxxx
dn: ou=ellipseast,dc=energy,dc=kz
objectClass: organizationalUnit
ou: ellipseast
dn: ou=staff,ou=ellipseast,dc=energy,dc=kz
objectClass: organizationalUnit
ou: staff
dn: ou=ellipsepe,dc=energy,dc=kz
objectClass: organizationalUnit
ou: ellipseast
dn: ou=staff,ou=ellipsepe,dc=energy,dc=kz
objectClass: organizationalUnit
ou: staff
dn: ou=ellipseskz,dc=energy,dc=kz
objectClass: organizationalUnit
ou: ellipseskz
dn: ou=staff,ou=ellipseskz,dc=energy,dc=kz
objectClass: organizationalUnit
ou: staff
#dn: uid=ldapadminskz,ou=staff,ou=ellipseskz,dc=energy,dc=kz
objectClass: person
objectClass: uidObject
objectClass: simpleSecurityObject
objectClass: top
cn: ldapadminskz
sn: ldapadminskz
uid: ldapadminskz
userPassword: ххх
dn: uid=ldapadminast,ou=staff,ou=ellipseast,dc=energy,dc=kz
objectClass: person
objectClass: uidObject
objectClass: simpleSecurityObject
objectClass: top
cn: ldapadminast
sn: ldapadminast
uid: ldapadminast
userPassword: ххх
dn: uid=ldapadminpe,ou=staff,ou=ellipsepe,dc=energy,dc=kz
objectClass: person
objectClass: uidObject
objectClass: simpleSecurityObject
objectClass: top
cn: ldapadminpe
sn: ldapadminpe
uid: ldapadminpe
userPassword: ххх
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to to dn.subtree="ou=ellipseast,dc=energy,dc=kz" attrs=userPassword
by self write
by dn.base="uid=ldapadminast,ou=staff,ou=ellipseast,dc=energy,dc=kz" write
by anonymous auth
by * none
olcAccess: {1}to attrs=userPassword
by self write
by anonymous auth
by * none
olcAccess: {2}to dn.subtree="ou=ellipseast,dc=energy,dc=kz"
by dn.base="uid=ldapadminast,ou=staff,ou=ellipseast,dc=energy,dc=kz" write
by * read
olcAccess: {3}to *
by * read
Текущие ACL такие# ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config '(olcAccess=*)' olcAccess olcSuffix
dn: olcDatabase={0}config,cn=config
olcAccess: {0}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external
,cn=auth manage by * break
dn: olcDatabase={1}monitor,cn=config
olcAccess: {0}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external
,cn=auth manage by * break
dn: olcDatabase={2}hdb,cn=config
olcSuffix: dc=energy,dc=kz
olcAccess: {0}to * by * read
Когда пытаюсь его загрузить получаю ошибку# ldapmodify -Y EXTERNAL -H ldapi:/// -f ./2.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={2}hdb,cn=config"
ldap_modify: Other (e.g., implementation specific) error (80)
additional info: <olcAccess> handler exited with 1
По ошибке нашёл следующее: