Я пытаюсь создать простую группу администраторов на моем сервере OpenLdap, на котором работает slapd. В настоящее время файла slapd нет, и я работал с форматом cn = config.
Моя цель - иметь возможность помещать пользователей в эту группу администраторов "cn = admins-group, ou = groups, dc = example, dc = com", чтобы они могли входить в веб-интерфейс Phpldapadmin и иметь возможность создавать пользователей в " ou = Люди, dc = example, dc = com ".
Это ldif для группы администраторов: (admin-group.ldif)
dn: cn=admin-group,ou=groups,dc=example,dc=com
objectClass: posixGroup
cn: admin-group
gidNumber: 12345
memberUid: admin1
Я понимаю, что один из шагов, который мне нужно предпринять для достижения своей цели, - это создать правило ACL, которое позволяет пользователям из группы администраторов получать доступ к нужным им ресурсам.
Это файл ldif, который я написал для изменения уже существующего правила в olcDatabase = {1} monitor: (accesschange.ldif)
dn: olcDatabase={1}monitor,cn=config
changetype: modify
add: olcAccess
olcAccess: to *
by self write
by group/posixGroup/uniqueMember=cn=admins- group,ou=groups,dc=example,dc=com write
Я запустил этот файл с помощью этой команды:
ldapmodify -x -W -D "cn=ldapadm,dc=example,dc=com" -f monitor.ldif
Это прошло без проблем. Однако я все еще получаю следующую ошибку на phpldapadmin при попытке добавить пользователя в подразделение People.
Could not add the object to the LDAP server.
LDAP said: Insufficient access
Error number: 0x32 (LDAP_INSUFFICIENT_ACCESS)
Description: You do not have sufficient permissions to perform that operation.
Я исследовал эту проблему в течение 2 недель безуспешно. Кто-нибудь может помочь?
РЕДАКТИРОВАТЬ: Я смотрю файл монитора olcDatabase: {1} в /etc/openldap/slapd.d/cn\=config/, и я не вижу нового правила, которое я добавил. Может быть, это проблема в том, как я использую ldapmodify?
РЕДАКТИРОВАТЬ № 2: Исправлена проблема записи с использованием ldapmodify с ВНЕШНИМ, как показано ниже:
ldapmodify -Y EXTERNAL -H ldapi:/// -f monitor.ldif
Я поместил новое правило ACL в monitor.ldif и запустил его таким образом. Monitor.ldif выглядит следующим образом.
dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external, cn=auth" read by dn.base="cn=ldapadm,dc=fsr,dc=local" read by * none
olcAccess: to *
by self write
by group/groupOfNames/member.exact="cn=admins,ou=groups,dc=fsr,dc=local" write
Однако я все еще не могу создать пользователя с одним admin1. Я не уверен, что мне не хватает. Я вижу правило, созданное мною в файле монитора olcDatabase: {1}, но я все еще не могу создать пользователя.
Схема группы, используемая в предложении who, неверна. Вы должны использовать схему группы с полными DN в качестве атрибута участника. memberUid
не будет работать.
Лучше использовать:
by group/groupNames/member="cn=admins-group,ou=groups,dc=example,dc=com" write
Запись группы должна выглядеть так:
dn: cn=admins-group,ou=groups,dc=example,dc=com
objectClass: groupOfNames
cn: admins-group
member: uid=foo1,ou=users,dc=example,dc=com