Am un domeniu (să-l numim dc=exemplu,dc=org
)
Domeniul are o ramură (ou=utilizatori,ou=ftp,ou=servicii,dc=k9999,dc=z9999,dc=infra,dc=exemplu,dc=org
).
Există o simpleSecurityObject
in acest domeniu (uid=admin,ou=managers,ou=ftp,ou=services,dc=k9999,dc=z9999,dc=infra,dc=example,dc=org
).
am nevoie de uid=admin,***
utilizatorul să aibă plin (administra
) acces la ou=utilizatori,***
ramură, așa că am adăugat următoarele olcAccess
record:
la
dn.subtree="ou=users,ou=ftp,ou=services,dc=k9999,dc=z9999,dc=infra,dc=example,dc=org"
de
dn.exact="uid=admin,ou=managers,ou=ftp,ou=services,dc=k9999,dc=z9999,dc=infra,dc=example,dc=org"
S-a adăugat la setul implicit de reguli:
dn: olcDatabase={1}mdb,cn=config
olcAccess: {0}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external
,cn=auth manage by * break
olcAccess: {1}to attrs=userPassword,shadowLastChange by self write by dn="cn=a
dmin,dc=example,dc=org" scrie prin autorizare anonimă prin * niciunul
olcAccess: {2}pentru a * prin citire automată de către dn="cn=admin,dc=example,dc=org" scrie prin
* nici unul
olcAccess: {3}la dn.subtree="ou=users,ou=ftp,ou=services,dc=k9999,dc=z9999,dc=
infra,dc=example,dc=org" de dn.exact="uid=admin,ou=managers,ou=ftp,ou=servi
gestionați ces,dc=k9999,dc=z9999,dc=infra,dc=example,dc=org
Dar ceva pare să fie în neregulă. Când alerg ldapsearch -D uid=admin,ou=managers,ou=ftp,ou=services,dc=k9999,dc=z9999,dc=infra,dc=example,dc=org -W -b ou=users,ou=ftp, ou=servicii,dc=k9999,dc=z9999,dc=infra,dc=exemplu,dc=org
, am urmatorul rezultat:
# LDIF extins
#
# LDAPv3
# de bază <ou=users,ou=ftp,ou=services,dc=k9999,dc=z9999,dc=infra,dc=example,dc=org> cu subarborele de aplicare
# filtru: (objectclass=*)
# solicită: TOATE
#
# rezultatul căutării
cautare: 2
rezultat: 32 Niciun astfel de obiect
# numResponses: 1
comanda terminată cu codul de ieșire 32
Obiectul este disponibil și cn=admin,dc=exemplu,dc=org
îl pot vedea fără dificultăți, așa că se pare că regula mea de acces este greșită. Dar ce este mai exact?
Se pare că regula implicită #2 ({2} la * de sine citit de dn="cn=admin,dc=example,dc=org" scrie de * niciunul
) se aprinde mai devreme decât regula pe care am adăugat-o. Asta înseamnă că ar trebui mereu adăugați regulile mele personalizate înainte de el?
Și de ce are această regulă de * niciunul
? Nu-i contrazice Documentația OpenLDAP?
Politica implicită de control al accesului este permisă citirea de către toți clienții
Se pare că regula #2 (mă refer la aceasta:
la *
prin autocitire
de dn="cn=admin,dc=example,dc=org" scrieți
de * niciunul
) nu este deloc „implicit”. Tocmai am găsit o altă instanță de OpenLDAP (am implementat-o acum aproximativ 4 ani). Această instanță (2.4.40) nu are deloc o astfel de regulă. Se pare că nu a fost adăugat de OpenLDAP în sine, ci mai degrabă a fost adăugat manual de cineva sau de altceva. Am dreptate? OpenLDAP nu are o astfel de regulă în mod implicit?