URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 89011
[ Назад ]

Исходное сообщение
"LDAP фильтр"

Отправлено rick , 27-Май-10 13:32 
Здравствуйте.
Помогите, пожалуйста, составить LDAP фильтр.

В схеме определено два контейнера:

ou=users,dc=example,dc=com
ou=groups,dc=example,dc=com

users содержит записи класса posixAccount, groups - posixGroup.
Мне необходимо выбрать из ou=users,dc=example,dc=com пользователя с uid=test и проверить, является ли он, скажем, членом группы (т.е. имеет ли группа атрибут memberUid со значением test) Admins. Пробовал и так и этак, ничего не получается. Служба каталогов - OpenLDAP 2.4.

Заранее благодарю.


Содержание

Сообщения в этом обсуждении
"LDAP фильтр"
Отправлено zerot , 27-Май-10 13:49 
пробуйте "итеративно" - скриптом. сначала извлекайте DN записи c UID=test, потом - ищите его в memberUid

"LDAP фильтр"
Отправлено zerot , 27-Май-10 13:50 
тут есть тонкость. Не знаю вашей ситуации, но по умолчанию в Linux (года 2 назад так было) члены группы хранятся в виде коротких имён. Возможно вы ищите длинные (полные, DN имена пользователей)

"LDAP фильтр"
Отправлено zerot , 27-Май-10 13:50 
Кроме того возможны как минимум два варианта хранения членов - в виде многострочных записей, и в виде разделяемого запятой списка коротких имён пользователей
удачи

"LDAP фильтр"
Отправлено rick , 27-Май-10 14:12 
>пробуйте "итеративно" - скриптом. сначала извлекайте DN записи c UID=test, потом -
>ищите его в memberUid

итеративно не подходит по той причине, что фильтр мне надо задать, скажем, в конфигурации pure-ftpd. мне нужно пускать по ftp только юзеров определенной группы.

имена членов группы - короткие, т.е. только uid каждого DN. Вот пример:

dn: cn=ftpusers,ou=groups,dc=example,dc=com
cn: ftpusers
gidNumber: 20000
description: Users able to ftp into example.com
memberUid: user1
memberUid: user2
memberUid: user3
objectClass: posixGroup
objectClass: top

Есть атрибут memberOf (при подключенном slapo-memberof), но он не работает с PosixGroup, только с GroupOfNames.


"LDAP фильтр"
Отправлено rick , 27-Май-10 14:49 
В общем никак. Но есть ссылка на патч, который добавляет возможность фильтровать по группе:
http://www.turnovfree.net/~stybla/linux/patch/pure-ftpd/auth.../

"LDAP фильтр"
Отправлено ALex_hha , 27-Май-10 15:10 
>[оверквотинг удален]
>ou=users,dc=example,dc=com
>ou=groups,dc=example,dc=com
>
>users содержит записи класса posixAccount, groups - posixGroup.
>Мне необходимо выбрать из ou=users,dc=example,dc=com пользователя с uid=test и проверить, является ли
>он, скажем, членом группы (т.е. имеет ли группа атрибут memberUid со
>значением test) Admins. Пробовал и так и этак, ничего не получается.
>Служба каталогов - OpenLDAP 2.4.
>
>Заранее благодарю.

Как то так

# ldapsearch -z 500 -h 127.0.0.1 -x -LLL -b 'ou=groups,dc=domain,dc=com' '(&(memberUid=test)(cn=test-group))'
dn: cn=test-group,ou=groups,dc=domain,dc=com
objectClass: top
objectClass: posixGroup
objectClass: sambaGroupMapping
cn: test-group
gidNumber: 1288
sambaSID: S-1-5-21-252513064-238223711-2310791221-3177
sambaGroupType: 2
displayName: test-group
memberUid: test