Вопрос или проблема
Я хочу добавить атрибут mail
к существующим пользователям LDAP. Я думаю, это возможно с использованием ldapmodify
, но не уверен, как это сделать. Я делал это вручную с помощью веб-интерфейса phpLDAPadmin, но у меня более 100 пользователей и я не хочу делать это вручную для всех.
Может ли кто-то направить меня в правильное направление.
$ ldapmodify -H ldap://yourhost -D cn=youradmin,dc=your,dc=domain -x -W
( введите пароль здесь )
dn: uid=username,ou=people,dc=your,dc=domain
changetype: modify
add: mail
mail: [email protected]
Во-первых, я хочу направить вас к главе B.4. Спецификация записей в каталоге с использованием LDIF (архивировано здесь) Руководства по администрированию Red Hat Directory Server для быстрого проведения урока о том, как создавать файлы LDIF, подходящие для использования с ldapmodify
. Создайте записи для нескольких ваших сотен пользователей, чтобы начать. Этот файл поможет выявить ошибки. Как только вы освоите формат файла, вы сможете создать записи для оставшихся 100 человек. Вот пример того, как может выглядеть отдельная запись:
dn: cn=Joe Smith,dc=example,dc=com
changetype: modify
add: mail
mail: [email protected]
Разрешенные значения для changetype:
:
changetype: add
changetype: modify
changetype: delete
changetype: modrdn
Если вы используете changetype: modify
, разрешенные изменения следующие:
changetype: modify
=>add:
changetype: modify
=>delete:
changetype: modify
=>replace:
Глава 3.1. Управление записями в каталоге с использованием командной строки предоставит вам примеры того, как работают все эти процессы.
Затем, после того как вы написали файл LDIF, у вас есть несколько способов отправить его на ваш LDAP сервер. Один из методов — подать файл непосредственно команде ldapmodify
:
ldapmodify -x -h $LDAP_HOST -D $LDAP_BINDDN -W -f $FILE
Флаг -W
просит ldapmodify
запросить пароль для $LDAP_BINDDN
в командной строке. Это означает, что вы не оставляете пароль на ваш LDAP сервер в вашем файле истории оболочки. Если вы хотите включить пароль в вашу команду ldapmodify
, используйте -w $PASSWORD
. Флаг -f $FILE
указывает ldapmodify
, какой файл LDIF изучать для внедряемых изменений.
На самом деле мне не нравится использовать флаг -f $FILE
. Передача файла в ldapmodify
требует 100% уверенности в том, что я правильно написал файл LDIF. Если я сделаю ошибку, ldapmodify
завершится, не сообщая мне о моей ошибке. Поэтому я предпочел бы использовать второй метод. Используйте команду ldapmodify
, которую я привел как пример, но без флага -f $FILE
. Без этого флага ldapmodify
получает свои модификации из STDIN
. Таким образом, я могу скопировать две или три записи из этого собранного файла LDIF и вставить их в мою оболочку для обработки ldapmodify
. Я делаю по 2 – 4 записи за раз и вношу исправления в записи LDIF на лету по мере необходимости. Это медленнее, чем передача идеального файла LDIF непосредственно в ldapmodify
, но быстрее, чем выяснение, где я допустил опечатку в этом файле.
Для прямого редактирования записей в LDAP я предпочитаю использовать “ldapvi”, который предоставляет редактор, где вы можете вносить изменения более удобным образом.
Да, вы можете использовать ldapmodify
для этого. Вам нужно сгенерировать файлы LDIF, содержащие операторы изменений, и затем направить их на ваш LDAP сервер с помощью ldapmodify
. Для получения дополнительной информации, пожалуйста, прочтите man ldapmodify
, который также содержит примеры.
.
Ответ или решение
Теория
LDAP (Lightweight Directory Access Protocol) – это широко используемый протокол для доступа к иерархически организованной информации в каталоге. Когда возникает необходимость добавить новый атрибут к существующим объектам пользователей в LDAP, необходимо использовать команду ldapmodify
. Данный процесс требует понимания того, как подготовить файл в формате LDIF (LDAP Data Interchange Format), который будет содержать инструкции для изменения данных в каталоге.
LDIF – это текстовый формат, который используется для представления записей в каталоге LDAP. Файл LDIF может содержать различные директивы для изменения записей, такие как add
, delete
, replace
и modify
. В случае добавления нового атрибута используется директива changetype: modify
вместе с add
.
Пример
Прежде всего, необходимо подготовить файл LDIF для добавления атрибута mail
к существующим записям пользователей. Пример содержания LDIF файла для одного пользователя может выглядеть следующим образом:
dn: uid=username,ou=people,dc=example,dc=com
changetype: modify
add: mail
mail: user@example.com
Каждая запись начинается с dn
(Distinguished Name) – уникального идентификатора записи в каталоге. Далее следует changetype: modify
, что указывает на изменения в существующей записи, затем add: mail
, который указывает на добавление нового атрибута, и, наконец, сама строка с атрибутом mail
.
Применение
-
Подготовка LDIF-файла:
Создайте файл LDIF, содержащий записи для всех пользователей, к которым вы хотите добавить атрибут. Вы можете использовать текстовый редактор для создания файла и они могут выглядеть так, как в приведенном примере. -
Использование команды ldapmodify:
После создания LDIF файла необходимо использовать командуldapmodify
для применения изменений:ldapmodify -x -h your-ldap-host -D "cn=admin,dc=example,dc=com" -W -f your_ldif_file.ldif
-x
указывает использовать простую аутентификацию.-h
определяет хост сервера LDAP.-D
обозначает Distinguished Name (DN) пользователя, имеющего право вносить изменения.-W
запрашивает ввод пароля для DN на указании, чтобы избежать включения пароля в командную строку.-f
указывает путь к файлу LDIF.
-
Проверка изменений:
После применения файла LDIF, убедитесь, что изменения применены правильно, выполнив поиск нужных записей в каталоге:ldapsearch -x -b "dc=example,dc=com" "(uid=username)" mail
Это позволит подтвердить, что каждый объект пользователя теперь имеет новый атрибут
mail
.
Заключение
Процесс добавления атрибутов к существующим записям пользователей в LDAP может показаться сложным, но при правильной подготовке и понимании LDIF и использования ldapmodify
, он становится управляемым и эффективным. Учитывая наличие более чем 100 пользователей, автоматизация с помощью LDIF и ldapmodify
– это значительно более эффективный и менее подверженный ошибкам процесс по сравнению с ручным внесением изменений через интерфейсы, такие как phpLDAPadmin.
Для дополнительного комфорта, особенно когда изменения необходимо отследить для множества записей, можно использовать ldapvi
– инструмент для визуального редактирования записей LDAP через командную строку, который может облегчить внесение массовых изменений в более безопасной и контролируемой среде.