| |
Где работаем: ldap-srv
На данном этапе у нас есть пустой каталог OpenLDAP. Мы можем проверить это, просто попытавшись извлечь из него информацию:
$ ldapsearch -xZZLLLWD cn=admin,dc=example,dc=com -b dc=example,dc=com Enter LDAP Password: No such object (32)
Если Вам интересно, коды ошибок LDAP описаны в RFC 4511, в приложении A Результирующие коды LDAP. В случае ошибки 32 сервер информирует нас, что запрашиваемый объект dc=example,dc=com не найден. Но такую же ошибку можно получить, если ACL сервера запрещают доступ.
Для работы нашего каталога понадобится создать корневой суффикс базы данных и добавить в него две организационных единицы (Organizational Unit, OU) для хранения пользователей и групп. Создадим LDIF-файл 4-users+groups.ldif, в котором опишем эту информацию:
dn: dc=example,dc=comdc: exampleobjectClass: topobjectClass: domaindn: ou=users,dc=example,dc=comou: UsersobjectClass: topobjectClass: organizationalUnitdescription: Central location for UNIX usersdn: ou=groups,dc=example,dc=comou: GroupsobjectClass: topobjectClass: organizationalUnitdescription: Central location for UNIX groups
Добавим эту информацию в наш каталог:
$ ldapmodify -a -xZZWD cn=admin,dc=example,dc=com -f 4-users+groups.ldif Enter LDAP Password: adding new entry "dc=example,dc=com" adding new entry "ou=users,dc=example,dc=com" adding new entry "ou=groups,dc=example,dc=com"
Можем удостовериться в том, что информация добавлена:
$ ldapsearch -xZZLLLWD cn=admin,dc=example,dc=com Enter LDAP Password: dn: dc=example,dc=com dc: example objectClass: top objectClass: domain dn: ou=users,dc=example,dc=com ou: Users objectClass: top objectClass: organizationalUnit description: Central location for UNIX users dn: ou=groups,dc=example,dc=com ou: Groups objectClass: top objectClass: organizationalUnit description: Central location for UNIX groups
Теперь давайте добавим несколько групп:
Этот список не окончательный и может быть дополнен, чтобы соответствовать нуждам Вашей организации.
Для добавления групп в каталог создадим новый LDIF, 4-groups.ldif:
dn: cn=sysadmin,ou=groups,dc=example,dc=comcn: sysadminobjectClass: topobjectClass: posixGroupgidNumber: 1100description: UNIX systems administratorsdn: cn=nssproxy,ou=groups,dc=example,dc=comcn: nssproxyobjectClass: topobjectClass: posixGroupgidNumber: 801description: Network Service Switch Proxydn: cn=test.group,ou=groups,dc=example,dc=comcn: test.groupobjectClass: topobjectClass: posixGroupgidNumber: 1101description: Test Group
Загрузим LDIF в наш каталог:
$ ldapmodify -a -xZZWD cn=admin,dc=example,dc=com -f 4-groups.ldif Enter LDAP Password: adding new entry "cn=sysadmin,ou=groups,dc=example,dc=com" adding new entry "cn=nssproxy,ou=groups,dc=example,dc=com" adding new entry "cn=test.group,ou=groups,dc=example,dc=com"
Настало время создать несколько пользователей. И вновь отмечаем, что список может быть расширен в соответствии с потребностями Вашей организации:
Создадим LDIF-файл 4-users.ldif для добавления пользователей. Пока не беспокойтесь о паролях, мы сейчас к ним вернёмся:
dn: cn=pablo,ou=users,dc=example,dc=comuid: pablogecos: Pablo SdobaobjectClass: topobjectClass: accountobjectClass: posixAccountobjectClass: shadowAccountuserPassword: {SSHA}RsAMqOI3647qg1gAZF3x2BKBnp0sEVfashadowLastChange: 15140shadowMin: 0shadowMax: 99999shadowWarning: 7loginShell: /bin/bashuidNumber: 1100gidNumber: 1100homeDirectory: /home/pablodn: cn=nssproxy,ou=users,dc=example,dc=comuid: nssproxygecos: Network Service Switch Proxy UserobjectClass: topobjectClass: accountobjectClass: posixAccountobjectClass: shadowAccountuserPassword: {SSHA}RsAMqOI3647qg1gAZF3x2BKBnp0sEVfashadowLastChange: 15140shadowMin: 0shadowMax: 99999shadowWarning: 7loginShell: /bin/falseuidNumber: 801gidNumber: 801homeDirectory: /home/nssproxydn: cn=test.user,ou=users,dc=example,dc=comuid: test.usergecos: Test UserobjectClass: topobjectClass: accountobjectClass: posixAccountobjectClass: shadowAccountuserPassword: {SSHA}RsAMqOI3647qg1gAZF3x2BKBnp0sEVfashadowLastChange: 15140shadowMin: 0shadowMax: 99999shadowWarning: 7loginShell: /bin/bashuidNumber: 1101gidNumber: 1101homeDirectory: /home/test.user
Пользователи связаны с группами через атрибут gidNumber. Для того, чтобы добавить в группу других пользователей, в запись группы необходимо добавить атрибут memberUID, перечислив в нём UID пользователей через запятую. Например, это может выглядеть вот так:
dn: cn=sysadmin,ou=groups,dc=example,dc=comcn: sysadminobjectClass: topobjectClass: posixGroupgidNumber: 1100description: UNIX systems administratorsmemberUID: 801,1101
Добавьте пользователей в каталог:
$ ldapmodify -a -xZZWD cn=admin,dc=example,dc=com -f 4-users.ldif Enter LDAP Password: adding new entry "cn=pablo,ou=users,dc=example,dc=com" adding new entry "cn=nssproxy,ou=users,dc=example,dc=com" adding new entry "cn=test.user,ou=users,dc=example,dc=com"
Теперь установим пароли для пользователей. Повторите нижеследующую команду для всех пользователей. Обратите внимание, что сначала Вам будет предложено дважды ввести пароль изменяемой записи, а затем — пароль записи cn=admin,dc=example,dc=com:
$ ldappasswd -xZZWD cn=admin,dc=example,dc=com -S cn=nssproxy,ou=users,dc=example,dc=com New password: Re-enter new password: Enter LDAP Password:
Если заглянуть в журнал /var/log/slapd.log, то можно увидеть строки, говорящие об изменении записи:
slapd[5319]: conn=1022 op=1 PASSMOD id="cn=nssproxy,ou=users,dc=example,dc=com" new slapd[5319]: conn=1022 op=1 RESULT oid= err=0 text=
Для того, чтобы пользователь nssproxy имел доступ к информации нашего каталога, необходимо поправить ACL базы данных с пользователями и группами. Но какое у этой базы DN? Давайте вспомним:
$ ldapsearch -xZZLLLWD cn=admin,dc=example,dc=com -b cn=config dn | grep -i database
Enter LDAP Password:
dn: olcDatabase={-1}frontend,cn=config
dn: olcDatabase={0}config,cn=config
dn: olcDatabase={1}mdb,cn=config
dn: olcDatabase={2}monitor,cn=config
В разделе 2.6 мы дали нашей учетной записи администратора очень широкие права, поэтому он может заглянуть в конфигурацию cn=config.
Теперь мы знаем, что требуется отредактировать ACL записи olcDatabase={1}mdb,cn=config.
Давайте проверим, какие ACL настроены для данного DN (вывод отформатирован):
$ ldapsearch -xZZLLLWD cn=admin,dc=example,dc=com -b olcDatabase={1}mdb,cn=config olcAccess
Enter LDAP Password:
dn: olcDatabase={1}mdb,cn=config
olcAccess: {0}to *
by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external ,cn=auth" manage
by * break
olcAccess: {1}to attrs=userPassword
by self write
by anonymous auth
olcAccess: {2}to *
by self read
Мы должны немного изменить ACL, чтобы предоставить доступ пользователю nssproxy на чтение атрибутов учётных записей. Для этого создадим LDIF-файл 4-nssproxy.acl.ldif:
dn: olcDatabase={1}mdb,cn=configchangetype: modifyreplace: olcAccessolcAccess: {0}to *by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external ,cn=auth" manageby * break-add: olcAccessolcAccess: {1}to attrs=userPasswordby self writeby anonymous auth-add: olcAccessolcAccess: {2}to *by self readby dn.base="cn=nssproxy,ou=users,dc=example,dc=com" read
Загрузим LDIF с изменениями:
$ ldapmodify -xZZWD cn=admin,dc=example,dc=com -f 4-nssproxy.acl.ldif
Enter LDAP Password:
modifying entry "olcDatabase={1}mdb,cn=config"
Проверим, можем ли мы просматривать информацию в каталоге от имени пользователя nssproxy. Для этого выполним запрос с использованием его учётных данных. Результатом запроса должно быть всё DIT (Directory Information Tree). Опустим его, для краткости:
$ ldapsearch -xZZLLLWD cn=nssproxy,ou=users,dc=example,dc=com "(objectClass=*)" Enter LDAP Password: dn: dc=example,dc=com ...
Убедитесь, что другие учётные записи пользователей не имеют доступа к DIT:
$ ldapsearch -xZZLLLWD cn=pablo,ou=users,dc=example,dc=com "(objectClass=*)" Enter LDAP Password: No such object (32)
База данных нашего сервера каталогов по-немногу заполняется объектами. С этого момента стоит подумать о выборе LDAP-браузера. Как правило, это приложение, которое позволяет наглядно отображать записи в базе данных и работать с ними. Лично у меня самый любимый — ldapvi. Но он консольный и имеет объективные недостатки. Попробуйте Apache Directory Studio. Он имеет нормальный GUI, бесплатен и поддерживает множество удобных функций для управления сервером каталогов. Этот браузер может быть установлен как отдельно, так и в качестве компонента программного средства Eclipse. Должен предупредить, при использовании Apache Directory Studio у меня возникали проблемы с доступом к серверу каталогов. Единственно разумное объяснение, которое я нашёл — ориентированность этого программного средства на использование с Apache Directory Server (ApacheDS). Так же неплохой вариант для работы из Windows — LDAP Admin.
|
Закладки на сайте Проследить за страницей |
Created 1996-2025 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |