Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
wiki:руководство_по_ubuntu_server:авторизация_по_сети:openldap_server [2012/06/12 18:50] [Установление подлинности через LDAP] |
wiki:руководство_по_ubuntu_server:авторизация_по_сети:openldap_server [2013/02/10 08:17] (текущий) орфография; </code> |
||
---|---|---|---|
Строка 58: | Строка 58: | ||
<note>Ubuntu теперь использует метод slapd-config для настройки slapd и данное руководство это отражает.</note> | <note>Ubuntu теперь использует метод slapd-config для настройки slapd и данное руководство это отражает.</note> | ||
- | Во время установки у вас будет запрос на информацию об администраторе. Это LDAP данные для rootDN вашего экземпляра базы данных. По умолчанию этот пользовательский DN **cn=admin,dc=example,dc=com**. Также по умолчанию не создаеется административного пользователя для базы данных slapd-config и вы, следовательно, будете вынуждены использовать внешнюю авторизацию LDAP для доступа к ней. Мы рассмотрим как это делается позднее. | + | Во время установки у вас будет запрос на информацию об администраторе. Это LDAP данные для rootDN вашего экземпляра базы данных. По умолчанию этот пользовательский DN **cn=admin,dc=example,dc=com**. Также по умолчанию не создается административного пользователя для базы данных slapd-config и вы, следовательно, будете вынуждены использовать внешнюю авторизацию LDAP для доступа к ней. Мы рассмотрим как это делается позднее. |
Некоторые классические схемы (cosine, nis, inetorgperson) выпускаются теперь для slapd. Это также включает базовую (core) схему, которая предполагается для любой рабочей схемы. | Некоторые классические схемы (cosine, nis, inetorgperson) выпускаются теперь для slapd. Это также включает базовую (core) схему, которая предполагается для любой рабочей схемы. | ||
Строка 86: | Строка 86: | ||
<note>Не редактируйте базу slapd-config напрямую. Вносите изменения через протокол LDAP (утилитами).</note> | <note>Не редактируйте базу slapd-config напрямую. Вносите изменения через протокол LDAP (утилитами).</note> | ||
- | ** Здесь ппоказано как выглядит дерево slapd-config через LDAP протокол: | + | ** Здесь показано как выглядит дерево slapd-config через LDAP протокол: |
<code>sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config dn | <code>sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config dn | ||
dn: cn=config | dn: cn=config | ||
Строка 393: | Строка 393: | ||
</code> | </code> | ||
- | Создаем каталог, устанавливаем файл настроек базы данных и перегружаем рофиль apparmor: | + | Создаем каталог, устанавливаем файл настроек базы данных и перегружаем профиль apparmor: |
<code> | <code> | ||
sudo -u openldap mkdir /var/lib/ldap/accesslog | sudo -u openldap mkdir /var/lib/ldap/accesslog | ||
Строка 563: | Строка 563: | ||
** Создаем секретный ключ Центра сертификатов: | ** Создаем секретный ключ Центра сертификатов: | ||
<code>sudo sh -c "certtool --generate-privkey > /etc/ssl/private/cakey.pem"</code> | <code>sudo sh -c "certtool --generate-privkey > /etc/ssl/private/cakey.pem"</code> | ||
- | ** Создаем временный файл /etc/ssl/ca.info для оределения CA: | + | ** Создаем временный файл /etc/ssl/ca.info для определения CA: |
<code> | <code> | ||
cn = Example Company | cn = Example Company | ||
Строка 648: | Строка 648: | ||
--outfile ldap02_slapd_key.pem | --outfile ldap02_slapd_key.pem | ||
</code> | </code> | ||
- | Создаем информационый файл ldap02.info для сервера Потребителя; подставляйте свои соответствующие значения: | + | Создаем информационный файл ldap02.info для сервера Потребителя; подставляйте свои соответствующие значения: |
<code> | <code> | ||
organization = Example Company | organization = Example Company | ||
Строка 666: | Строка 666: | ||
--outfile ldap02_slapd_cert.pem | --outfile ldap02_slapd_cert.pem | ||
</code> | </code> | ||
- | Получаем копию сертифиата CA: | + | Получаем копию сертификата CA: |
<code>cp /etc/ssl/certs/cacert.pem .</code> | <code>cp /etc/ssl/certs/cacert.pem .</code> | ||
Все готово. Теперь переносим каталог ldap02-ssl на сервер Потребителя. Здесь мы использовали scp (данные изменяем соответственно): | Все готово. Теперь переносим каталог ldap02-ssl на сервер Потребителя. Здесь мы использовали scp (данные изменяем соответственно): | ||
Строка 761: | Строка 761: | ||
Если вы собираетесь использовать LDAP для хранения пользователей SAMBA, вам потребуется настроить SAMBA сервер на использование LDAP. Смотрите [[wiki:руководство_по_ubuntu_server:авторизация_по_сети:samba_and_ldap|Samba и LDAP]] для подробностей. | Если вы собираетесь использовать LDAP для хранения пользователей SAMBA, вам потребуется настроить SAMBA сервер на использование LDAP. Смотрите [[wiki:руководство_по_ubuntu_server:авторизация_по_сети:samba_and_ldap|Samba и LDAP]] для подробностей. | ||
- | Альтернативой пакету **libnss-ldap** является пакет **libnss-ldapd**. Однако он добавит в систему пакет nscd, который, возможно, нежелателен. Просто впоследствии удалите его. | + | <note>Альтернативой пакету **libnss-ldap** является пакет **libnss-ldapd**. Однако он добавит в систему пакет **nscd**, который, возможно, нежелателен. Просто впоследствии удалите его.</note> |
====Управление пользователями и группами==== | ====Управление пользователями и группами==== | ||
- | The ldap-utils package comes with enough utilities to manage the directory but the long string of options needed can make them a burden to use. The ldapscripts package contains wrapper scripts to these utilities that some people find easier to use. | + | Пакет **ldap-utils** поставляется с достаточным количеством утилит для управления каталогами, но необходимость использовать длинные строки с опциями делает их применение обременительным. Пакет **ldapscripts** содержит оберточные сценарии (wrapper scripts) для этих утилит, которые некоторые находят более удобными в использовании. |
- | Install the package: | + | Устанавливаем пакет: |
- | + | <code>sudo apt-get install ldapscripts</code> | |
- | sudo apt-get install ldapscripts | + | |
- | + | ||
- | Then edit the file /etc/ldapscripts/ldapscripts.conf to arrive at something similar to the following: | + | |
+ | Затем редактируем файл /etc/ldapscripts/ldapscripts.conf для получения нечто похожего на следующее: | ||
+ | <code> | ||
SERVER=localhost | SERVER=localhost | ||
BINDDN='cn=admin,dc=example,dc=com' | BINDDN='cn=admin,dc=example,dc=com' | ||
Строка 783: | Строка 782: | ||
UIDSTART=10000 | UIDSTART=10000 | ||
MIDSTART=10000 | MIDSTART=10000 | ||
+ | </code> | ||
- | Now, create the ldapscripts.passwd file to allow rootDN access to the directory: | + | Теперь создаем файл ldapscripts.passwd чтобы разрешить rootDN доступ к каталогу: |
+ | <code>sudo sh -c "echo -n 'secret' > /etc/ldapscripts/ldapscripts.passwd" | ||
+ | sudo chmod 400 /etc/ldapscripts/ldapscripts.passwd</code> | ||
- | sudo sh -c "echo -n 'secret' > /etc/ldapscripts/ldapscripts.passwd" | + | <note>Замените %%"secret"%% на действующий пароль для пользователя rootDN вашей базы.</note> |
- | sudo chmod 400 /etc/ldapscripts/ldapscripts.passwd | + | |
- | + | ||
- | Replace “secret” with the actual password for your database's rootDN user. | + | |
- | + | ||
- | The scripts are now ready to help manage your directory. Here are some examples of how to use them: | + | |
- | + | ||
- | Create a new user: | + | |
- | + | ||
- | sudo ldapadduser george example | + | |
- | + | ||
- | This will create a user with uid george and set the user's primary group (gid) to example | + | |
- | + | ||
- | Change a user's password: | + | |
- | + | ||
- | sudo ldapsetpasswd george | + | |
- | Changing password for user uid=george,ou=People,dc=example,dc=com | + | |
- | New Password: | + | |
- | New Password (verify): | + | |
- | + | ||
- | Delete a user: | + | |
- | + | ||
- | sudo ldapdeleteuser george | + | |
- | + | ||
- | Add a group: | + | |
- | + | ||
- | sudo ldapaddgroup qa | + | |
- | + | ||
- | Delete a group: | + | |
- | + | ||
- | sudo ldapdeletegroup qa | + | |
- | + | ||
- | Add a user to a group: | + | |
- | + | ||
- | sudo ldapaddusertogroup george qa | + | |
- | + | ||
- | You should now see a memberUid attribute for the qa group with a value of george. | + | |
- | + | ||
- | Remove a user from a group: | + | |
- | + | ||
- | sudo ldapdeleteuserfromgroup george qa | + | |
- | + | ||
- | The memberUid attribute should now be removed from the qa group. | + | |
- | + | ||
- | The ldapmodifyuser script allows you to add, remove, or replace a user's attributes. The script uses the same syntax as the ldapmodify utility. For example: | + | |
+ | Сценарии теперь готовы помогать в управлении вашим каталогом. Здесь несколько примеров как их использовать: | ||
+ | ** Создать нового пользователя: | ||
+ | <code>sudo ldapadduser george example</code> | ||
+ | Это создаст пользователя с uid **george** и установит gid **example** в качестве первичной пользовательской группы. | ||
+ | ** Изменить пароль пользователя: | ||
+ | <code>sudo ldapsetpasswd george | ||
+ | Changing password for user uid=george,ou=People,dc=example,dc=com | ||
+ | New Password: | ||
+ | New Password (verify):</code> | ||
+ | ** Удалить пользователя: | ||
+ | <code>sudo ldapdeleteuser george</code> | ||
+ | ** Добавить группу: | ||
+ | <code>sudo ldapaddgroup qa</code> | ||
+ | ** Удалить группу: | ||
+ | <code>sudo ldapdeletegroup qa</code> | ||
+ | ** Добавить пользователя к группе: | ||
+ | <code>sudo ldapaddusertogroup george qa</code> | ||
+ | Вы теперь можете увидеть атрибут **memberUid** для группы **qa** со значением для **george**. | ||
+ | ** Удалить пользователя из группы: | ||
+ | <code>sudo ldapdeleteuserfromgroup george qa</code> | ||
+ | Атрибут **memberUid** теперь будет удален из группы **qa**. | ||
+ | ** Сценарий **ldapmodifyuser** позволяет вам добавлять, удалять или заменять пользовательские атрибуты. Сценарий исползует тот же синтаксис, что и утилита **ldapmodify**. Например: | ||
+ | <code> | ||
sudo ldapmodifyuser george | sudo ldapmodifyuser george | ||
# About to modify the following entry : | # About to modify the following entry : | ||
Строка 851: | Строка 832: | ||
replace: gecos | replace: gecos | ||
gecos: George Carlin | gecos: George Carlin | ||
+ | </code> | ||
+ | Поле имени пользователя (gecos) теперь %%"George Carlin"%%. | ||
+ | ** Приятной особенностью **ldapscripts** является система шаблонов. Шаблоны позволяют вам настраивать атрибуты пользователей, групп и компьютерных объектов. Например, чтобы разрешить шаблон пользователей, отредактируйте /etc/ldapscripts/ldapscripts.conf, изменив: | ||
+ | <code>UTEMPLATE="/etc/ldapscripts/ldapadduser.template"</code> | ||
+ | В каталоге /etc/ldapscripts находятся шаблоны **sample**. Скопируйте или переименуйте файл ldapadduser.template.sample в /etc/ldapscripts/ldapadduser.template: | ||
+ | <code>sudo cp /usr/share/doc/ldapscripts/examples/ldapadduser.template.sample \ | ||
+ | /etc/ldapscripts/ldapadduser.template</code> | ||
- | The user's gecos should now be “George Carlin”. | + | Отредактируйте новый шаблон для добавления желаемых атрибутов. Следующее создаст новых пользователей с objectClass inetOrgPerson: |
- | + | <code> | |
- | A nice feature of ldapscripts is the template system. Templates allow you to customize the attributes of user, group, and machine objectes. For example, to enable the user template edit /etc/ldapscripts/ldapscripts.conf changing: | + | |
- | + | ||
- | UTEMPLATE="/etc/ldapscripts/ldapadduser.template" | + | |
- | + | ||
- | There are sample templates in the /etc/ldapscripts directory. Copy or rename the ldapadduser.template.sample file to /etc/ldapscripts/ldapadduser.template: | + | |
- | + | ||
- | sudo cp /usr/share/doc/ldapscripts/examples/ldapadduser.template.sample \ | + | |
- | /etc/ldapscripts/ldapadduser.template | + | |
- | + | ||
- | Edit the new template to add the desired attributes. The following will create new users with an objectClass of inetOrgPerson: | + | |
dn: uid=<user>,<usuffix>,<suffix> | dn: uid=<user>,<usuffix>,<suffix> | ||
objectClass: inetOrgPerson | objectClass: inetOrgPerson | ||
Строка 878: | Строка 855: | ||
description: User account | description: User account | ||
title: Employee | title: Employee | ||
+ | </code> | ||
- | Notice the <ask> option used for the sn attribute. This will make ldapadduser prompt you for it's value. | + | Отметьте опцию **%%<ask>%%**, использованную для атрибута **sn**. Это создает запрос при использовании **ldapadduser** для его значения. |
- | There are utilities in the package that were not covered here. Here is a complete list: | + | Есть утилиты из пакета, которые здесь не рассматривались. Вот их полный список: |
- | ldaprenamemachine | + | [[http://manpages.ubuntu.com/manpages/en/man1/ldaprenamemachine.1.html|ldaprenamemachine]] \\ |
- | ldapadduser | + | [[http://manpages.ubuntu.com/manpages/en/man1/ldapadduser.1.html|ldapadduser]] \\ |
- | ldapdeleteuserfromgroup | + | [[http://manpages.ubuntu.com/manpages/en/man1/ldapdeleteuserfromgroup.1.html|ldapdeleteuserfromgroup]] \\ |
- | ldapfinger | + | [[http://manpages.ubuntu.com/manpages/en/man1/ldapfinger.1.html|ldapfinger]] \\ |
- | ldapid | + | [[http://manpages.ubuntu.com/manpages/en/man1/ldapid.1.html|ldapid]] \\ |
- | ldapgid | + | [[http://manpages.ubuntu.com/manpages/en/man1/ldapgid.1.html|ldapgid]] \\ |
- | ldapmodifyuser | + | [[http://manpages.ubuntu.com/manpages/en/man1/ldapmodifyuser.1.html|ldapmodifyuser]] \\ |
- | ldaprenameuser | + | [[http://manpages.ubuntu.com/manpages/en/man1/ldaprenameuser.1.html|ldaprenameuser]] \\ |
- | lsldap | + | [[http://manpages.ubuntu.com/manpages/en/man1/lsldap.1.html|lsldap]] \\ |
- | ldapaddusertogroup | + | [[http://manpages.ubuntu.com/manpages/en/man1/ldapaddusertogroup.1.html|ldapaddusertogroup]] \\ |
- | ldapsetpasswd | + | [[http://manpages.ubuntu.com/manpages/en/man1/ldapsetpasswd.1.html|ldapsetpasswd]] \\ |
- | ldapinit | + | [[http://manpages.ubuntu.com/manpages/en/man1/ldapinit.1.html|ldapinit]] \\ |
- | ldapaddgroup | + | [[http://manpages.ubuntu.com/manpages/en/man1/ldapaddgroup.1.html|ldapaddgroup]] \\ |
- | ldapdeletegroup | + | [[http://manpages.ubuntu.com/manpages/en/man1/ldapdeletegroup.1.html|ldapdeletegroup]] \\ |
- | ldapmodifygroup | + | [[http://manpages.ubuntu.com/manpages/en/man1/ldapmodifygroup.1.html|ldapmodifygroup]] \\ |
- | ldapdeletemachine | + | [[http://manpages.ubuntu.com/manpages/en/man1/ldapdeletemachine.1.html|ldapdeletemachine]] \\ |
- | ldaprenamegroup | + | [[http://manpages.ubuntu.com/manpages/en/man1/ldaprenamegroup.1.html|ldaprenamegroup]] \\ |
- | ldapaddmachine | + | [[http://manpages.ubuntu.com/manpages/en/man1/ldapaddmachine.1.html|ldapaddmachine]] \\ |
- | ldapmodifymachine | + | [[http://manpages.ubuntu.com/manpages/en/man1/ldapmodifymachine.1.html|ldapmodifymachine]] \\ |
- | ldapsetprimarygroup | + | [[http://manpages.ubuntu.com/manpages/en/man1/ldapsetprimarygroup.1.html|ldapsetprimarygroup]] \\ |
- | ldapdeleteuser | + | [[http://manpages.ubuntu.com/manpages/en/man1/ldapdeleteuser.1.html|ldapdeleteuser]] |
====Резервное копирование и восстановление==== | ====Резервное копирование и восстановление==== | ||
- | Now we have ldap running just the way we want, it is time to ensure we can save all of our work and restore it as needed. | + | Теперь у нас ldap работает именно так, как нам хотелось и настало время убедиться, что мы можем сохранить всю нашу работу и восстановить ее при необходимости. |
- | + | ||
- | What we need is a way to backup the ldap database(s), specifically the backend (cn=config) and frontend (dc=example,dc=com). If we are going to backup those databases into, say, /export/backup, we could use slapcat as shown in the following script, called /usr/local/bin/ldapbackup: | + | |
+ | Что нам требуется, это способ сделать резервные копии для базы данных ldap, специфичные для данных баз заднего (cn=config) и переднего плана (dc=example,dc=com). Если мы собираемся сохранить эти базы, скажем, в /export/backup, мы можем использовать **slapcat** как показано в следующем сценарии с именем /usr/local/bin/ldapbackup: | ||
+ | <code> | ||
#!/bin/bash | #!/bin/bash | ||
Строка 920: | Строка 898: | ||
nice ${SLAPCAT} -n 2 > ${BACKUP_PATH}/access.ldif | nice ${SLAPCAT} -n 2 > ${BACKUP_PATH}/access.ldif | ||
chmod 640 ${BACKUP_PATH}/*.ldif | chmod 640 ${BACKUP_PATH}/*.ldif | ||
+ | </code> | ||
- | These files are uncompressed text files containing everything in your ldap databases including the tree layout, usernames, and every password. So, you might want to consider making /export/backup an encrypted partition and even having the script encrypt those files as it creates them. Ideally you should do both, but that depends on your security requirements. | + | <note>Это несжатые текстовые файлы, содержащие все данные из вашей ldap базы, включая расположение дерева, имена пользователей и каждый пароль. Поэтому вы можете решить сделать /export/backup шифрованным разделом и даже иметь сценарии шифрования этих файлов сразу после создания. В идеале вы можете сделать и то и другое, но это зависит от ваших требований безопасности.</note> |
- | Then, it is just a matter of having a cron script to run this program as often as we feel comfortable with. For many, once a day suffices. For others, more often is required. Here is an example of a cron script called /etc/cron.d/ldapbackup that is run every night at 22:45h: | + | Затем имеет смысл создать сценарии cron для запуска этой программы настолько часто, насколько вам будет комфортно. Для большинства достаточно одного раза в день. Для некоторых требуется чаще. Здесь пример сценария cron, названного /etc/cron.d/ldapbackup, который срабатывает каждую ночь в 22:45: |
+ | <code>MAILTO=backup-emails@domain.com | ||
+ | 45 22 * * * root /usr/local/bin/ldapbackup</code> | ||
- | MAILTO=backup-emails@domain.com | + | Теперь файлы созданы и они могут быть скопированы на резервный сервер. |
- | 45 22 * * * root /usr/local/bin/ldapbackup | + | |
- | + | ||
- | Now the files are created, they should be copied to a backup server. | + | |
- | + | ||
- | Assuming we did a fresh reinstall of ldap, the restore process could be something like this: | + | |
+ | Предположим мы сделали переустановку ldap; процесс восстановления будет подобен следующему: | ||
+ | <code> | ||
sudo service slapd stop | sudo service slapd stop | ||
sudo mkdir /var/lib/ldap/accesslog | sudo mkdir /var/lib/ldap/accesslog | ||
Строка 940: | Строка 918: | ||
sudo chown -R openldap:openldap /var/lib/ldap/ | sudo chown -R openldap:openldap /var/lib/ldap/ | ||
sudo service slapd start | sudo service slapd start | ||
+ | </code> | ||
====Ссылки==== | ====Ссылки==== | ||
- | The primary resource is the upstream documentation: www.openldap.org | + | - Первый ресурс это актуальная документация: [[http://www.openldap.org/|www.openldap.org]]. |
- | + | - Существует много страниц руководств пакета slapd. Здесь наиболее важные, особенно в плане рассматриваемых в этом руководстве материалов: | |
- | There are many man pages that come with the slapd package. Here are some important ones, especially considering the material presented in this guide: | + | - [[http://manpages.ubuntu.com/manpages/en/man8/slapd.8.html|slapd]] |
- | + | - [[http://manpages.ubuntu.com/manpages/en/man5/slapd-config.5.html|slapd-config]] | |
- | slapd | + | - [[http://manpages.ubuntu.com/manpages/en/man5/slapd.access.5.html|slapd.access]] |
- | slapd-config | + | - [[http://manpages.ubuntu.com/manpages/en/man5/slapo-syncprov.5.html|slapo-syncprov]] |
- | slapd.access | + | - Другие руководства: |
- | slapo-syncprov | + | - [[http://manpages.ubuntu.com/manpages/en/man8/auth-client-config.8.html|auth-client-config]] |
- | + | - [[http://manpages.ubuntu.com/manpages/en/man8/pam-auth-update.8.html|pam-auth-update]] | |
- | Other man pages: | + | - [[http://www.zytrax.com/books/ldap/|LDAP for Rocket Scientists]] от Zytrax; руководство менее педантичное, но содержащее всесторонне рассмотренный LDAP. |
- | + | - [[https://help.ubuntu.com/community/OpenLDAPServer|OpenLDAP wiki]] страница сообщества Ubuntu имеет коллекцию заметок. | |
- | auth-client-config | + | - [[http://www.oreilly.com/catalog/ldapsa/|LDAP System Administration]] от O'Reilly (текст, 2003) |
- | pam-auth-update | + | - [[http://www.packtpub.com/OpenLDAP-Developers-Server-Open-Source-Linux/book|Mastering OpenLDAP]] от Packt (текст, 2007) |
- | + | ||
- | Zytrax's LDAP for Rocket Scientists; a less pedantic but comprehensive treatment of LDAP | + | |
- | + | ||
- | A Ubuntu community OpenLDAP wiki page has a collection of notes | + | |
- | + | ||
- | O'Reilly's LDAP System Administration (textbook; 2003) | + | |
- | + | ||
- | Packt's Mastering OpenLDAP (textbook; 2007) | + | |
---- | ---- |