- 4. Управление пользователями и группами в OpenLDAP
- LDAP-браузер
- How to Add LDAP Users and Groups in OpenLDAP on Linux
- Create a LDIF file for New User
- Add a LDAP User using ldapadd
- Assign Password to LDAP User
- Create LDIF file for New Group
- Add a LDAP Group using ldapadd
- Create LDIF file for an existing Group
- Add an User to an existing Group using ldapmodify
- Verify LDAP Entries
- Delete an Entry from LDAP using ldapdelete
- If you enjoyed this article, you might also like..
- Записки Линуксоидов
- Поиск по этому блогу
- Авторизация через ldap на Linux сервере
- Настройка авторизации через LDAP
- Автоматическое создание домашних директорий пользователям из LDAP
- Ограничение авторизации
- Аутентификация LDAP в Linux
- Требования
- Введение
- Настройка OpenLDAP
- Миграция / добавление данных в каталог
- Конфигурация клиента
- Apache mod_auth_ldap
- Средства администрирования LDAP
4. Управление пользователями и группами в OpenLDAP
Где работаем: ldap-srv
На данном этапе у нас есть пустой каталог OpenLDAP. Мы можем проверить это, просто попытавшись извлечь из него информацию:
Если Вам интересно, коды ошибок LDAP описаны в RFC 4511, в приложении A «Результирующие коды LDAP». В случае ошибки 32 сервер информирует нас, что запрашиваемый объект dc=example,dc=com не найден. Но такую же ошибку можно получить, если ACL сервера запрещают доступ.
Для работы нашего каталога понадобится создать корневой суффикс базы данных и добавить в него две организационных единицы (Organizational Unit, OU) для хранения пользователей и групп. Создадим LDIF-файл 4-users+groups.ldif, в котором опишем эту информацию:
Добавим эту информацию в наш каталог:
Можем удостовериться в том, что информация добавлена:
Теперь давайте добавим несколько групп:
- sysadmin, для объединения системных администраторов Linux;
- nssproxy, которая будет использоваться для опроса сервера, чтобы не делать анонимный опрос;
- test.group, для тестирования различных частей архитектуры PAM и LDAP. Тестирование — это всегда хорошо!
Этот список не окончательный и может быть дополнен, чтобы соответствовать нуждам Вашей организации.
Для добавления групп в каталог создадим новый LDIF, 4-groups.ldif:
Загрузим LDIF в наш каталог:
Настало время создать несколько пользователей. И вновь отмечаем, что список может быть расширен в соответствии с потребностями Вашей организации:
- pablo. Это я 😉
- nssproxy, который будет использоваться для опроса сервера, чтобы не делать опрос от анонимного пользователя.
- test.user. Как и тестовая группа, этот пользователь будет использоваться для проверки наших настроек.
Создадим LDIF-файл 4-users.ldif для добавления пользователей. Пока не беспокойтесь о паролях, мы сейчас к ним вернёмся:
Пользователи связаны с группами через атрибут gidNumber . Для того, чтобы добавить в группу других пользователей, в запись группы необходимо добавить атрибут memberUID , перечислив в нём UID пользователей через запятую. Например, это может выглядеть вот так:
Добавьте пользователей в каталог:
Теперь установим пароли для пользователей. Повторите нижеследующую команду для всех пользователей. Обратите внимание, что сначала Вам будет предложено дважды ввести пароль изменяемой записи, а затем — пароль записи cn=admin,dc=example,dc=com :
Если заглянуть в журнал /var/log/slapd.log, то можно увидеть строки, говорящие об изменении записи:
Для того, чтобы пользователь nssproxy имел доступ к информации нашего каталога, необходимо поправить ACL базы данных с пользователями и группами. Но какое у этой базы DN? Давайте вспомним:
В разделе 2.6 мы дали нашей учетной записи администратора очень широкие права, поэтому он может заглянуть в конфигурацию cn=config .
Теперь мы знаем, что требуется отредактировать ACL записи olcDatabase=<1>mdb,cn=config .
Давайте проверим, какие ACL настроены для данного DN (вывод отформатирован):
Мы должны немного изменить ACL, чтобы предоставить доступ пользователю nssproxy на чтение атрибутов учётных записей. Для этого создадим LDIF-файл 4-nssproxy.acl.ldif:
Загрузим LDIF с изменениями:
Проверим, можем ли мы просматривать информацию в каталоге от имени пользователя nssproxy. Для этого выполним запрос с использованием его учётных данных. Результатом запроса должно быть всё DIT (Directory Information Tree). Опустим его, для краткости:
Убедитесь, что другие учётные записи пользователей не имеют доступа к DIT:
LDAP-браузер
База данных нашего сервера каталогов по-немногу заполняется объектами. С этого момента стоит подумать о выборе LDAP-браузера. Как правило, это приложение, которое позволяет наглядно отображать записи в базе данных и работать с ними. Лично у меня самый любимый — ldapvi. Но он консольный и имеет объективные недостатки. Попробуйте Apache Directory Studio. Он имеет нормальный GUI, бесплатен и поддерживает множество удобных функций для управления сервером каталогов. Этот браузер может быть установлен как отдельно, так и в качестве компонента программного средства Eclipse. Должен предупредить, при использовании Apache Directory Studio у меня возникали проблемы с доступом к серверу каталогов. Единственно разумное объяснение, которое я нашёл — ориентированность этого программного средства на использование с Apache Directory Server (ApacheDS). Так же неплохой вариант для работы из Windows — LDAP Admin.
OpenLDAP и Ubuntu на практике > Управление пользователями и группами в OpenLDAP
Источник
How to Add LDAP Users and Groups in OpenLDAP on Linux
To add something to the LDAP directory, you need to first create a LDIF file.
The ldif file should contain definitions for all attributes that are required for the entries that you want to create.
With this ldif file, you can use ldapadd command to import the entries into the directory as explained in this tutorial.
If you are new to OpenLDAP, you should first install OpenLDAP on your system.
Create a LDIF file for New User
The following is a sample LDIF file that will be used to create a new user.
Add a LDAP User using ldapadd
Now, use ldapadd command and the above ldif file to create a new user called adam in our OpenLDAP directory as shown below:
Assign Password to LDAP User
To set the password for the LDAP user we just created above, use ldappasswd command as shown in the below example:
In the above command:
- -s specify the password for the username entry
- -x The username entry for which the password is changed
- -D specify your DN here. i.e Distinguished name to authenticate in the server
Create LDIF file for New Group
Similar to adding user, you’ll also need a ldif file to add a group.
To add a new group to the LDAP groups OU, you need to create a LDIF with the group information as shown in the example ldif file below.
Add a LDAP Group using ldapadd
Just like adding user, use ldapadd command to add the group from the group1.ldif file that we created above.
Create LDIF file for an existing Group
To add an existing user to a group, we should still create an ldif file.
First, create an ldif file. In this example, I am adding the user adam to the dbagrp (group id: 678)
Add an User to an existing Group using ldapmodify
To add an user to an existing group, we’ll be using ldapmodify. This example will use the above LDIF file to add user adam to dbagrp.
Verify LDAP Entries
Once you’ve added an user or group, you can use ldapsearch to verify it.
Here is a simple example to verify if the users exists in the LDAP database:
Delete an Entry from LDAP using ldapdelete
If you’ve made a mistake while adding an user or group, you can remove the entry using ldapdelete.
To delete an entry, you don’t need to create an ldif file. The following will delete user “adam” that we created earlier.
If you enjoyed this article, you might also like..
|
|
Thnx a lot. I have waited for this since the first part.
This is kiran sir, I already contact with gmail.My request could you please post a ldap migration from on server to another it is also important
do you have tutorial on how to understand structure of ldap? it is hard to understand the cn and ou and other tags
Dear Sir,
Please continue your next openldap article. It is very simple and interesting. Show us how to authenticate users via nfs and how use phpldapadmin utility. Above you have showed how to add user adam to directory-I am confusing here. should we use useradd command to create a user before adding user to directory? Kindly continue…
With best wishes
Venkatesh
Bangalore
Hi Ramesh!
Many many thanks for your OpenLDAP article. I am very new to Openldap. I was searching this type of basic article. I found many and old-requires previous versions of centos or redhat systems and requires previous knowledge about ldap. Yours is very basic and following step by step. As I told I am very new to openldap, I am facing lot of problems and no-one around me to solve the basic doubts. I have a small doubt, please guide me.
in your above “How to Add LDAP Users and Groups in OpenLDAP on Linux” article, ‘Add a LDAP User using ldapadd ‘ section, should we create a ‘adam user’ by using useradd command before running the command->
ldapadd -x -W -D “cn=ramesh,dc=tgs,dc=com” -f adam.ldif ?
because after running above command, I am not finding a adam directory in /home directory.
Please clarify. I am eagerly waiting for your reply..
Sorry for the grammatical errors.
Thanks
Venkatesh
India
First of all thumbs on both this and the previous article!
I’m getting very confused with setting this up. I’ve got the following user
[root@localhost ldap]# ldapadd -x -W -D “cn=gmullin,dc=lava,dc=com” -f newusers.ldif
Enter LDAP Password:
adding new entry “uid=hduser,ou=users,dc=lava,dc=com”
ldap_add: Invalid syntax (21)
additional info: objectClass: value #1 invalid per syntax
[root@localhost ldap]# cat newusers.ldif
dn: uid=hduser,ou=users,dc=lava,dc=com
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: hduser
uid: hduser
uidNumber: 16860
gidNumber: 100
homeDirectory: /home/hduser
loginShell: /bin/bash
gecos: hduser
userPassword:
shadowLastChange: 0
shadowMax: 0
shadowWarning: 0
After a quick Google, I’m told I need to load my schema (how come yours is already loaded?), with something like the following:
ldapadd -Y EXTERNAL -H ldapi:// -f /usr/local/etc/openldap/schema/nis.ldif
How do I get the appropriate schema for this article?
Help is greatly appreciated!
Very very good tutorial. Thanks !
I am sure that it will be suitable for a lot of people. but i think there is a little mistake with the option of ldapadd.
indeed, you should use -l and not -f when you use ldapadd, as the manual says it :
SLAPADD(8)
/usr/sbin/slapadd [-b suffix] [-c] [-d debug-level] [-f slapd.conf] [-F confdir] [-g] [-j lineno] [-l ldif-file] [-n dbnum] [-o option[=value]] [-q] [-s] [-S SID] [-u] [-v] [-w]
Hope it will be useful ! 😉
Question. In our dev environment I need to add many test dummy accounts in order to test the impact on our system. How can I go about adding in 20k, 50, 100k users into OpenLdap? Do I really have to have to build a custom JAVA project that calls the add command that many times or is there another way to get this job done?
Источник
Записки Линуксоидов
У программиста есть два состояния: «Втупляю» и «Попёрло». (C) Gen
Поиск по этому блогу
Авторизация через ldap на Linux сервере
В системах с большим числом машин почти всегда встает вопрос централизованного управления пользователями и группами (авторизации, аутентификации т.д.). Для этого удобно использовать LDAP. В этой статье я расскажу как настроить аутентификацию через LDAP и ограничить доступ к машине только для определенных групп.
Настройка авторизации через LDAP
Для начала нужно установить пакеты обеспечивающие нужные нам функции:
Во время установки нас спросят следующее:
- URI of LDAP server — URI нашего сервера, например, ldap://ldapserver.corp.local (ldap может быть доступен по протоколам ldaps и ldapi).
- Name of the LDAP search base — базовый каталог для поиска, обычно он похож на домен на котором расположен сервер, в нашем примере это будет dc=corp,dc=local
- Make local admin database admin — позволит локальным администраторам изменять учетные записи в LDAP, обычно нужно ответить нет.
- Does the LDAP database require login — требуется ли логиниться в LDAP для того чтобы авторизовать пользователя, как правило нет.
После этого нужно немного подправить файл /etc/ldap.conf:
Если ваш LDAP сервер использует зашифрованное соединение, то нужно скопировать корневой сертификат, которым подписан сертификат сервера LDAP в папку /etc/ssl/certs.
Включаем авторизацию через ldap:
И перезапускаем демоны отвечающие за авторизацию, чтобы новая конфигурация применилась:
Если все настроено верно, то мы сможем получить информацию о каком-либо пользователе из LDAP
Теперь пользователи из LDAP смогут авторизоваться на нашем компьютере и даже менять свой пароль при помощи passwd.
Автоматическое создание домашних директорий пользователям из LDAP
Ограничение авторизации
Помимо этого метода можно сделать через nss_base_ это позволит указывать LDAP на какие машины разрешено заходить пользователю или группе.
Источник
Аутентификация LDAP в Linux
Это руководство покажет вам, как держать своих пользователей в LDAP и аутентифицировать некоторых из них.
Я не буду показывать, как устанавливать определенные пакеты, поскольку это зависит от дистрибутива / системы.
Я сосредоточусь на «чистой» конфигурации всех компонентов, необходимых для аутентификации / хранения пользователей в LDAP.
Предполагается, что вы переходите от обычной аутентификации passwd / shadow, но она также подходит для людей, которые делают это с нуля.
Требования
Введение
Мы хотим добиться того, чтобы наши пользователи сохранялись в LDAP, аутентифицировались через LDAP (direct или pam) и чтобы вы имели некоторый инструмент для управления этими всем понятным для человека способом.
Таким образом, мы можем использовать все программное обеспечение, поддерживающее LDAP, или возвратимся к модулю LDAP PAM, который будет действовать как шлюз PAM-> LDAP.
Более подробную информацию о идее LDAP можно найти в Википедии: LDAP wikipedia
Настройка OpenLDAP
OpenLDAP состоит из slapd и slurpd-демона.
Этот способ охватывает один сервер LDAP без репликации, поэтому мы сосредоточимся только на slapd.
Я также предполагаю, что вы установили и инициализировали установку OpenLDAP (в зависимости от системы / распространения).
Если да, перейдем к части конфигурации.
В моей системе (Gentoo) конфигурация OpenLDAP хранится в /etc/openldap, нас интересует файл /etc/openldap/slapd.conf.
Но сначала мы должны сгенерировать пароль для администратора LDAP, чтобы поместить его в файл конфигурации:
Конфигурация выглядит так:
Не забудьте изменить суффикс и пути.
Это варианты с некоторыми базовыми ACL, необходимыми для изменения паролей пользователем.
Если вам нужна дополнительная функциональность, прочитайте руководство по OpenLDAP.
Теперь, когда у нас есть надлежащая конфигурация для slapd, мы можем запустить демон:
Пожалуйста, не забудьте сделать что-то подобное в файле конфигурации, отвечающем за аргументы, переданные slapd (путь должен указывать на slapd.sock):
Теперь мы можем проверить, работает ли openldap и работает ли он правильно.
У нас еще нет данных в каталоге, но мы можем попытаться связать их как cn = Manager, dc = domain, dc = com.
Когда вас попросят ввести пароль, вы должны использовать тот, который вы создали (конечно, его текстовая версия :):
Миграция / добавление данных в каталог
Теперь, когда у нас есть работающий сервер LDAP, мы должны заполнить его данными, либо создать, либо перенести записи.
Я покажу вам, как переносить существующие записи из обычных /etc/ passwd, /etc/shadow, /etc/groups
Первый шаг – настроить mogrationtools.
Конфигурационный файл в Gentoo находится в /usr/share/migrationtools/migrate_common.ph.
Как правило, вам нужно изменить только эти моменты:
Теперь вы готовы перенести данные (на самом деле это работает даже без команды export):
Теперь у нас есть данные в формате, понятном серверу LDAP.
Пожалуйста, откройте один из файлов с текстовым редактором, чтобы привыкнуть к синтаксису.
После этого мы можем добавить данные из ldifs.
Вы можете попробовать найти некоторые данные:
Конфигурация клиента
Под клиентом я имею в виду машину, которая подключается к LDAP-серверу для получения пользователей и авторизации.
Это может быть и машина, на которой работает LDAP-сервер.
В обоих случаях мы должны отредактировать три файла: /etc/ldap.conf, /etc/nsswitch.conf и /etc/pam.d/system-auth
Начнем с ldap.conf, клиента ldap:
Теперь пришло время для nsswitch.conf и pam
Добавьте в nsswitch.conf:
И измените system-auth (или все, что у вас есть, например login, sshd и т. д.):
Время проверить его. Лучший инструмент для этого – хороший старый getent.
Выберите пользователя из вашей системы и введите:
Вы должны получить результат дважды, если nss_ldap работает нормально.
По часть pam , работоспособность может быть протестирована путем удаления пользователя из /etc/passwd и попытки входа в систему через ssh.
Apache mod_auth_ldap
Чтобы получить авторизацию LDAP в apache, вам необходимо загрузить модуль mod_auth_ldap
Теперь достаточно изменить .htaccess:
Обратите внимание, что этот метод можно также использовать для авторизации Subversion WebDAV
Средства администрирования LDAP
Есть несколько инструментов, которые я рекомендую использовать для администрирования сервера OpenLDAP
Источник