Управляем LDAP из командной строки
Материал из База знаний Linux.ру
Управление сервером LDAP из командной строки Linux
Управление сервером LDAP (Lightweight Directory Access Protocol) - кажется поначалу довольно запутанным, хотя на самом деле всё не так сложно как кажется на первый взгляд. С помощью этой статьи вы сможете начать управлять сервером каталогов с помощью трёх простых команд.
Кстати, недавно я уже писал о графическом интерфейсе, который поможет даже новичку поднять LDAP-сервер и настроить его (см. статью "Укрощаем LDAP с помощью 389 Fedora Directory Server (англ.)). Но, однако, вам всё равно может потребоваться работать с данными на сервере с помощью командной строки. Будет ли это просто поиск, добавление/удаление/редактирование данных - всё это покажет время, а пока что лучше к этому заранее подготовиться.
Поначалу команды LDAP покажутся довольно сложными, но затем привыкнете. Чтобы успешно работать с сервером каталогов из командной строки, необходимо в первую очередь выучить три команды: ldapadd, ldapmodify, и ldapsearch.
Приступая к началу
Для простоты изучения я использовал свою собственную сеть в качестве примера. Сеть называется wallen.local, так что основное имея сети будет выглядеть как "dc=wallen,dc=local". Эти данные мы будем использовать при использовании всех команд LDAP-сервера. Само собой, настройки в вашей сети могут отличаться. Будем так же считать (для простоты), что на сервере LDAP уже имеется некий каталог сданными в нём.
Я также предполагаю, что сервер LDAP уже запущен и вы готовы приступить к вводу команд. ИтаК, давайте для начала обратимся к команде ldapadd.
Используем команду ldapadd
Команду ldapadd можно использовать двумя способами. Вы можете вводить данные сразу, или использовать текстовый файл, из которого ldapadd будет читать. Поскольку второй способ гораздо более удобный, (его также можно приспособить для добавления одиночных записей), посему я продемонстриую добавление записей используя готовый ldif-файл.
В самом общем виде использование команды следующее:
ldapadd [OPTIONS] [CREDENTIALS] filename
Прежде чем приступить к выполнению команды, нужно сначала её составить и записать в файл. Так что давайте создадим файл, который добавляет одну довольно простую запись в каталог LDAP. Запись будет выглядеть следующим образом:
# USER ENTRY dn: cn=Jack Wallen,ou=people,dc=wallen,dc=local cn: Jack Wallen objectClass: person sn: Wallen
Пример выше - это очень простая запись добавляющая пользователя Jack Wallen (поле common name), который указан в поле person (являющийся типом objectClass). Сохраните данный файл как users.ldif в вашем домашнем каталоге ~/, после чего запустите следующую команду:
sudo ldapadd -x -D cn=admin,dc=wallen,dc=local -W -f users.ldif
Естественно, не забудьте подправить команду таким образом, чтобы она соответствовала настройкам вашего LDAP-сервера. И можно, в принцие не выполнять команду в том же самом каталоге, где лежит ваш файл users.ldif.
А теперь, допустим, вы хотите добавить несколько записей разом. Сие проделывается столь же просто. Всё что вам надо, это добавить запись во всё тот же файл users.ldif, где будут перечислены все те пользователи, которых вы хотите добавить. Подобная запись выглядит примерно следующим образом:
# USER ENTRY dn: cn=Jack Wallen,ou=people,dc=wallen,dc=local cn: Jack Wallen objectClass: person sn: Wallen # USER ENTRY dn: cn=Sheldon Cooper,ou=people,dc=wallen,dc=local cn: Sheldon Cooper objectClass: person sn: Cooper # USER ENTRY dn: cn=Leonard Hofstadter,ou=people,dc=wallen,dc=local cn: Leonard Hofstadter objectClass: person sn: Hofstadter # USER ENTRY dn: cn=Howard Wolowitz,ou=people,dc=wallen,dc=local cn: Howard Wolowitz objectClass: person sn: Wolowitz # USER ENTRY dn: cn=Rajesh Koothrappali,ou=people,dc=wallen,dc=local cn: Rasjesh Koothrappali objectClass: person sn: Koothrappali
Этот приём добавит несколько записей точно так же, как если бы вы добавляли всего одну.
Ну что ж. Пора научиться модифицировать уже существующие записи.
Используем команду ldapmodify
Команда ldapmodify используется для изменения уже имеющихся на сервере записей. Приёмы использования этой команды немного отличаются от команды ldapadd. Дело в том, что ldapmodify более интерактивна и требует следующих шагов:
1. Вызов команды ldapmodify с необходимыми опциями 2. Указание ldapmodify, что мы хотим изменить 3. Модификация самих данных 4. Выход по "горячей" клавише CTRL-d. 5. Применения изменений сделанных ldapmodify.
Давайте предположим, что мы хотим сменить отдел в записи Rajesh Koothrappali с отдела астральной физики на отдел теоретической физики. Данная информация располагается в поле gecos (поле содержащее основную информацию о записи). чтобы начать изменения, необходимо выполнить следующую команду:
ldapmodify -h localhost -x -W -D "cn=admin,dc=wallen,dc=local"
Теперь нам необходимо указать серверу LDAP, что же за запись мы собираемся там менять:
dn: uid=rkoothrappali,ou=People,dc=wallen,dc=local
Нажимайте клавишу "ввод" и переходите к следующей части нашего замысла:
changetype: modify
После чего, снова нажимайте клавишу Enter. Теперь, наконец, проинформирует LDAP что же за поле мы собираемся сменить:
replace: gecos
Ну вот, нажав "ввод" в очередной раз, мы попали туда, куда надо. Давайте введём в поле gecos то, что мы хотели:
gecos: Theoretical Physics Department, Caltech University
Последняя строка завершает нашу работу. Далее, нажимайте клавишу "ввод" и затем Ctrl+d, чтобы выйти из командной оболочки LDAP. Ну вот, мы точно изменили нужную запись. Теперь давайте поищем эту запись и удостоверимся, что введённые изменения соответствуют сделанным.
Используем ldapsearch
Ldapsearch - простейшая команда в использовании. Если вы введёте:
ldapsearch -x -b "dc=wallen,dc=local" -s sub "objectclass=*"
То вы найдёте запись Rajesh'а выглядящую примерно так:
# rkoothrappali, People, wallen.local dn: uid=rkoothrappali,ou=People,dc=wallen,dc=local uid: rkoothrappali cn: Rajesh Koothrappali objectClass: account objectClass: posixAccount objectClass: top loginShell: /bin/bash uidNumber: 500 gidNumber: 120 homeDirectory: /home/rkoothrappali gecos: Theoretical Physics, Caltech University
Заключение Ну что ж, мы узнали ещё одну из сторон работы с LDAP. Как вы уже заметили, работать в командной строке с LDAP не так уж и сложно. И, кстати, вы можете узнать гораздо больше о различных опциях и вариантах использования команд используя справку доступную по команде man (к примеру, man ldapadd, man ldapmodify и man ldapsearch).
Автор статьи: Jack Wallen. Оригинал статьи.
Перевод: Буданов Евгений aka r0g3r.
