sziasztok,
egy Ubuntu 18.04-re telepítettem slapd-t (@(#) $OpenLDAP: slapd (Ubuntu) (Aug 8 2019 18:08:36) $). disclaimer: kezdő vagyok LDAP-ban. a cél első közelítésben mindössze annyi, hogy usereket szeretnék csoprtokba sorolni, és aszerint adni hozzáféréseket hálózati szolgáltatásokhoz, hogy az adott user tagja-e a vonatkozó csoportnak.
kezelőfelületnek az LdapCherry-t választottam (https://github.com/kakwa/ldapcherry), ez nagyjából pont erre van kitalálva. ez a csoportokat a "member" attribútumon keresztül kezeli, így a csoportok a groupOfNames objectClass-szal lettek definiálva:
dn: cn=cloud,ou=groups,dc=example,dc=org
objectClass: groupOfNames
cn: cloud
member: uid=test.user,ou=people,dc=example,dc=org
member: uid=aaa,ou=people,dc=example,dc=org
structuralObjectClass: groupOfNames
entryUUID: ...
creatorsName: cn=admin,dc=example,dc=org
createTimestamp: 20191203004205Z
entryCSN: 20191204001721.894079Z#000000#000#000000
modifiersName: cn=admin,dc=example,dc=org
modifyTimestamp: 20191204001721Z
rögtön az első szolgáltatás (cloud) a memberOf user attribútumon keresztül szűri a elhasználókat, így jutottam el a memberOf overlay telepítéséig. ez elvileg sikerült is, így néznek ki a vonatkozó config bejegyzések:
dn: cn=module{0},cn=config
objectClass: olcModuleList
cn: module{0}
olcModulePath: /usr/lib/ldap
olcModuleLoad: {0}back_mdb
olcModuleLoad: {1}memberof.la
structuralObjectClass: olcModuleList
entryUUID: ...
creatorsName: cn=config
createTimestamp: 20191201152221Z
entryCSN: 20191203214644.047665Z#000000#000#000000
modifiersName: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
modifyTimestamp: 20191203214644Z
dn: olcOverlay={0}memberof,olcDatabase={1}mdb,cn=config
objectClass: olcConfig
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: top
olcOverlay: memberof
olcMemberOfDangling: ignore
olcMemberOfRefInt: TRUE
olcMemberOfGroupOC: groupOfNames
olcMemberOfMemberAD: member
olcMemberOfMemberOfAD: memberOf
structuralObjectClass: olcMemberOf
entryUUID: ...
creatorsName: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
createTimestamp: 20191203225212Z
entryCSN: 20191203225212.258200Z#000000#000#000000
modifiersName: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
modifyTimestamp: 20191203225212Z
ha LdapCherry-ben beteszek egy usert egy csoportba, szépen megkapja a user a megfelelő memberOf attribútumot:
dn: uid=aaa,ou=people,dc=example,dc=org
cn: aaa
title: aaa
objectClass: top
objectClass: person
objectClass: posixAccount
objectClass: inetOrgPerson
loginShell: /bin/false
userPassword:: YWFhYUFBMTE=
uidNumber: 9999
gidNumber: 10000
sn: aaa
homeDirectory: /dev/null
mail: aaa@aaa.com
uid: aaa
structuralObjectClass: inetOrgPerson
entryUUID: ...
creatorsName: cn=admin,dc=example,dc=org
createTimestamp: 20191204001721Z
entryCSN: 20191204001721.873952Z#000000#000#000000
modifyTimestamp: 20191204001721Z
memberOf: cn=cloud,ou=groups,dc=example,dc=org
modifiersName: cn=admin,dc=example,dc=org
a probléma, hogy ha viszont kiveszem a csoportból, onnan eltűnik a vonatkozó member attribútum, de a usernél továbbra is megmarad a memberOf, vagyis hiába veszem ki a csoportból, ugyanúgy hozzáfér a szolgáltatáshoz. nagyon úgy tűnik, hogy a memberOf overlay csak az egyik irányban működik.
- mi lehet ennek az oka?
- lehet-e az az ok, hogy az overlay betöltésnél úgylátszik bénáztam, és 3 bejegyzés is van:
dn: cn=module{0},cn=config
objectClass: olcModuleList
cn: module{0}
olcModulePath: /usr/lib/ldap
olcModuleLoad: {0}back_mdb
olcModuleLoad: {1}memberof.la
structuralObjectClass: olcModuleList
dn: cn=module{1},cn=config
objectClass: olcModuleList
cn: module{1}
olcModulePath: /usr/lib/ldap
olcModuleLoad: {0}memberof
structuralObjectClass: olcModuleList
dn: cn=module{2},cn=config
objectClass: olcModuleList
cn: module{2}
olcModulePath: /usr/lib/ldap
olcModuleLoad: {0}memberof
structuralObjectClass: olcModuleList
- megoldhatja-e a problémát, ha törlöm az {1} és {2} bejegyzéseket?
- betöltésnél mi a helyes modul elnevezés, "memberof" vagy "memberof.la"? a leírás amit találtam, használta a .la-t, de az eleve betöltött modulnál (back_mdb) nincs, a leírásban ott is van.
- okozhatja-e ez (az .la ottléte vagy hiánya) a problémát?
elnézést a hosszú nyitásért, de úgy vettem észre, ezen a területen különösen sokminden múlik a részleteken, ezért szerettem volna minél precízebben felvázolni a problémát. előre is köszönök minden segítséget!