Резюме команд OpenLDAP
- ldapsearch: Поиск записей дерева каталогов OpenLDAP.
- ldapadd: Добавляет записи в дереве каталогов в формате LDIF.
- ldapdelete: Deletes OpenLDAP directory tree entries.
- ldapmodify: Изменить запись дерева каталога OpenLDAP.
- ldapwhoami: Проверяет личность пользователей OpenLDAP.
- ldapmodrdn: Оценивает запись DN в дереве каталогов OpenLDAP.
- ldapcompare: определяет, принадлежат ли значение DN и указанное значение параметра одной и той же записи.
- ldappasswd: Измените запись пользователя в дереве каталогов OpenLDAP для сброса пароля.
- slaptest: проверьте файл slapd.conf или каталог cn=configuration.
- slapindex: Создаёт индекс дерева каталогов OpenLDAP для повышения эффективности запросов.
- slapcat: Преобразует данные в LDIF-файлы для OpenLDAP.
Команда ldapadd
Параметры | описание | -x | Выполните простую аутентификацию | -D | DN использовался для привязки сервера | -х | Адрес службы справочника | -w | Связать пароль DN | -f | Файлы, использующие LDIF-файлы для добавления записей |
Сначала мы готовим файл test.ldif со следующей командой:
Содержание следующее:
dn: uid=xzz,ou=Users,dc=itsvse,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
homeDirectory: /home/itsvse_xzz
loginShell: /bin/bash
cn: xzz
uidNumber: 1000
gidNumber: 1000
sn: System Administrator
mail: xzz@itsvse.com
postalAddress: shanghai
mobile: 13788888888
Добавляйте команды следующим образом:
После ввода пароля он успешно добавляется, как показано на рисунке ниже:
Команда ldapmodify
Команда ldapmodify фиксирована и в основном реализует различные функции модификации через конфигурационные файлы.
Файл demo.ldif выглядит следующим образом, что означает, что параметр uidNumber пользователя uid=xzz изменяется.
Командование ldappasswd
LDAPPASSWD открывает соединение с LDAP-сервером и меняет пароль для записи.
Параметры | описание | -x | Выполните простую аутентификацию | -D | DN использовался для привязки сервера | -w | Связать пароль DN | -С | Введите пароль при запросе | -с | Pass, чтобы установить пароль для Pass | -a | Pass set old passWD to pass | -A | Подсказка о настройках старого passwd | -Х | это значит, что сервер должен быть привязан | -Я | Используйте метод сессии SASL |
Команда ldapsearch
Команда поиска LDAP
[root@VM_0_9_centos ~]# ldapsearch -h
ldapsearch: option requires an argument -- 'h'
ldapsearch: unrecognized option -h
usage: ldapsearch [options] [filter [attributes...]]
where: фильтр, совместимый с RFC 4515, фильтр поиска LDAP Атрибуты Список описаний атрибутов с разделёнными пробелами которые могут включать: 1.1 Отсутствие атрибутов * все пользовательские атрибуты + все операционные характеристики Варианты поиска: -deref one из никогда (по умолчанию), всегда, поиск или поиск -A Retrieve только имена атрибутов (без значений) -b на базе dn для поиска -c режим непрерывной работы (не останавливайтесь на ошибках) -E [!] <ext>[=<extparam>] расширения поиска (! указывает на критическую важность) [!] domainScope (область домена) !dontUseCopy (Не используйте Copy) [!] mv=<filter> (фильтр совпадения значений RFC 3876) [!] pr=<size>[/prompt|noprompt] (RFC 2696 размещённые результаты/подсказка) [!] sss=[-]<attr[:OID]>[/[-]<attr[:OID]>...] (Сортировка на серверной стороне RFC 2891) [!] subentries[=true|false] (RFC 3672 subentries) [!] sync=ro[/<cookie>] (RFC 4533 LDAP Sync refreshOnly) rp[/<cookie>][/<slimit>] (refreshAndPersist) [!] vlv=<before>/<after>(/<offset><count>/|:<value>) (просмотры виртуального списка ldapv3-vlv-09) [!] deref=derefAttr:attr[,...] [; derefAttr:attr[,...] [; ...]] [!] <oid>[=:<b64value>] (общий контроль; без обработки ответа) -f файл — операции чтения из 'file' -Префикс F префикс URL для файлов (по умолчанию: file:///tmp/) -l ограничивает время поиска (в секундах, или «нет» или «максимум») -Ответы печати L-принтера в формате LDIFv1 -LL печатает ответы в формате LDIF без комментариев - LLL печатает ответы в формате LDIF без комментариев и версия -M включить управление управлением DSA IT (-MM для критичного значения) -Версия протокола P-версии (по умолчанию: 3) -s область один — базовый, один, подраздел или потомки (область поиска) -S attr отсортировать результаты по атрибуту 'attr' -t записывать бинарные значения в файлы во временной директории -tt записать все значения в файлы во временной директории -T пути записи файлов в каталог, указанный по пути (по умолчанию: /tmp) -u включают имена записей, удобных для пользователя, в результат -z предел размера (в записях, или «none» или «max») для поиска Распространённые варианты: -d уровень отладки LDAP установлен на 'level' -D binddn bind DN -e [!] <ext>[=<extparam>] общие расширения (! указывает на критичность) [!] assert=<filter> (RFC 4528; струна фильтра RFC 4515) [!] authzid=<authzid> (RFC 4370; "dn:<dn>" или "u:<user>") [!] цепи[=<resolveBehavior>[/<continuationBehavior>]] один из «chainingPreferred», «chainingRequired», "рекомендацииПредпочтительно", "Требуются направления" [!] manageDSAit (RFC 3296) [!] noop ppolicy [!] postread[=<attrs>] (RFC 4527; Список ATTR с разделёнными запятыми) [!] preread[=<attrs>] (RFC 4527; Список ATTR с разделёнными запятыми) [!] Расслабься [!] sessiontracking abandon, cancel, ignore (SIGINT отправляет abandon/cancel, или игнорирует реакцию; если критически важно, не ждёт SIGINT. Не совсем управляет) -h-хост LDAP-сервер -H URI LDAP Унифицированный идентификатор(ы) ресурса -Я использую интерактивный режим SASL -n показывать, что было бы сделано, но не делать этого на самом деле -N не используют обратный DNS для канонизации имени хоста SASL -O props свойства безопасности SASL -o <opt>[=<optparam>] общие варианты nettimeout=<timeout> (в секундах, или «нет» или «максимум») ldif-wrap=<width> (в столбцах, или «нет» для отсутствия обёртки) порт -p на LDAP-сервере -Q используй режим SASL Quiet -R область SASL -U authcid SASL аутентификационная идентичность -v запускается в режиме многословного (диагностика стандартного выхода) -Информация о версии печати V (только VV) -w passwd bind password (для простой аутентификации) -Запрос W для привязки пароля -x Простая аутентификация -X authzid SASL авторизационная идентичность ("dn:<dn>" или "u:<user>") -y файл Читать пароль из файла -Y-мех SASL механизм -Z Запустить запрос TLS (-ZZ для успешного ответа) Команда следующая:
Результаты запроса следующие:
Запросите всех пользователей:
Объяснение существительного в LDAP
Класс объектов
Класс объектов LDAP — это модель данных, встроенная в LDAP. Каждый objectClass имеет свою собственную структуру данных, например, у нас есть objectClass под названием «Phone Book», который, безусловно, будет иметь множество встроенных атрибутов, таких как имя (uid), ID номер (uidNumber), имя устройства (gid), домашний адрес (homeDirectory) и т.д., одновременно существует objectClass под названием «Classmate Record», который содержит «телефонный справочник» Некоторые атрибуты (например, uid, homeDirectory) также содержат атрибуты, которых нет в «телефонной книге» (например, описание и т.д.).
Запись
Запись может называться записью, запись — это запись, базовое хранилище в LDAP; Его также можно рассматривать как набор DN и набор атрибутов. Обратите внимание, что запись может содержать несколько objectClass, например, zhang3 может одновременно существовать в «Телефонной книге» или в «Записи одноклассника».
DN
Distinguished Name — уникальное отличительное название записи в LDAP, полное DN-написание: uid=zhang3, ou=People, dc=163, dc=com. Единственная запись в LDAP уникальна для LDAP-сервера.
Фильтр поиска LDAP
Используйте фильтр для поиска LDAP. Фильтр обычно состоит из единицы, например (attribute=value), например: (&(uid=ZHANGSAN)(objectclass=person)) указывает, что запись LDAP пользователя поиска — ZHANGSAN. Другой пример: (&(|( uid= ZHANGSAN)(uid=LISI))(objectclass=person)), указывая, что поиск пользователя с идентификатором поиска — это ZHANGSAN, или LISI; Вы также можете использовать * для представления любого значения, например (uid=ZHANG*SAN), и искать записи с uid-значениями, начиная с ZHANG и заканчивая SAN. Кроме того, согласно различным правилам сопоставления атрибутов LDAP, может существовать фильтр следующим образом: (&(createtimestamp>=20050301000000)(createtimestamp<=20050302000000)), который указывает, что время создания поиска находится между 20050301000000 и 20050302000000.
В Filter «&» означает «и»; “!” означает «не»; “|” означает «или». В зависимости от правил сопоставления можно использовать «=», «~=», «>=» и «<=».
Базовый DN
Базовый DN может быть "dc=163,dc=com" или "dc=Люди,dc=163,dc=com". Поскольку LDAP — это древообразная структура данных, поиск начнётся с BaseDN после указания базы, и мы можем задать область поиска следующим образом: только на основе поиска (базовый), на уровне прямого подуровня (один уровень) и на уровне всех поддеревьев.
objectClass
В LDAP запись должна содержать атрибут objectClass и иметь как минимум одно значение. Каждое значение будет использоваться как шаблон для хранения данных с помощью LDAP-записи; Шаблон содержит атрибут, который должен быть присвоен записи, и необязательный атрибут. objectClass имеет строгую иерархию, где верх и псевдоним находятся вверху. Например, objectClass организационного человека подчинён личности, а человек подчинён верхнему.
objectClass можно разделить на следующие 3 категории: Структурные: например, личность и организацияЕдиница; Вспомогательные: например, extensibeObject; Аннотация: например, абстрактный objectClass нельзя использовать напрямую. В схеме OpenLDAP определено много objectClasss, а названия некоторых часто используемых objectClass приведены ниже.
- Счёт
- псевдоним
- DCobject
- Домен
- ipHost
- Организация
- организационная роль
- организационное подразделение
- Человек
- организационныйПерсон
- inetOrgPerson
- Житель
- posixAccount
- posixGroup
ObjectClass — это коллекция атрибутов, и LDAP инкапсулирует многие распространённые объекты в человеческих организациях и инкапсулирует их в классы объектов. Например, персонал включает фамилию (sn), имя (cn), номер телефона (telephoneNumber), пароль (userPassword) и другие атрибуты, а organizationalPerson — это класс наследования лица; помимо вышеуказанных атрибутов, он также включает титул, почтовый индекс (PostalCode) и почтовый адрес (PostalAddress) и другие атрибуты.
Типы элементов можно легко определить с помощью классов объектов. Каждая запись может напрямую наследовать несколько классов объектов, что наследует различные свойства. Если есть два класса объектов с одним и тем же атрибутом, после наследования записи сохраняется только один атрибут. Класс объектов также указывает, какие свойства являются базовой информацией и должны содержать (Must Required): какие свойства являются расширенной информацией и могут содержать (May или Optional).
Существует три типа классов объектов: структурный, абстрактный и вспомогательный. Структурные типы — это самые базовые типы, которые задают базовые свойства тела объекта, и каждая запись принадлежит и принадлежит только одному классу структурных объектов. Абстрактные типы могут быть структурными типами или другими абстрактными родителями типов, которые организуют общие части свойств объекта вместе, называемые шаблонами для других классов, и элементы не могут напрямую интегрировать абстрактные классы объектов. Вспомогательный тип определяет расширенные свойства объектной сущности. Хотя каждая планка принадлежит только одному классу структурных объектов, она может одновременно принадлежать нескольким вспомогательным классам объектов.
Сам класс объектов может наследовать друг друга, поэтому корневым классом объекта является верхний абстрактный класс объекта. Возьмём в качестве примера часто используемые типы людей, их наследственное отношение показано на рисунке:
Встроенные атрибуты accout: userid, description, host, localityName, organizationName, organizationalUnitName, см. также;
Встроенные атрибуты inetOrgPerson: cn, sn, description, seeAlso, telephoneNumber, userPassword, destinationIndicator, facsimileTelephoneNumber, internationaliSDNNumber, l, ou, physicalDeliveryOfficeName、postOfficeBox、postalAddress、postalCode、preferredDeliveryMethod、registeredAddress、st、street、telephoneNumber、teletexTerminalIdentifier、 telexNumber、title、x121Address、audio、usinessCategory、carLicense、departmentNumber、isplayName、employeeNumber、employeeType、givenName、homePhone、homePostalAddress、initials、 jpegPhoto, labeledURI, mail, manager, mobile, o, pager, photo, preferredLanguage, roomNumber, secretary, uid, userCertificate и т.д.;
Как видно, Accout заранее задает только несколько необходимых и полезных атрибутов (этого точно достаточно для проверки входа), тогда как в inetOrgPerson много встроенных атрибутов, таких как номер телефона, номер мобильного телефона, адрес улицы, номер электронной почты, адрес электронной почты, номер комнаты, аватар, менеджер, номер сотрудника и т.д.
Поэтому при настройке LDAP рекомендуется установить тип objectClass как accout, если это только для проверки входа, а objectClass — inetOrgPerson, если вы хотите создать большое и полное сокровище информации о сотрудниках
Здесь я обычно использую 'inetOrgPerson', 'posixAccount', 'shadowAccount'.
Требуемые атрибуты аккаунта — userid, а для posixAccount — cn, gidNumber, homeDirectory, uid, uidNumber; Требуемый атрибут shadowAccount — uid, а опциональные атрибуты включают shadowExpire, shadowInactive, shadowMax, shadowMin, userPassword и др. Максимальное требуемое свойство — objectClass (видно, что top и другие objectClass являются наследуемыми отношениями).
Атрибут
Атрибуты похожи на переменные в программировании и могут назначать их. Многие часто используемые атрибуты объявляются в OpenLDAP (пользователи также могут определять свои собственные атрибуты). Распространённые значения атрибутов следующие:
- c: Кантри.
- CN:Common Name, которое относится к имени объекта. Если речь идёт о человеке, его полное имя должно быть использовано.
- DC:Domain component, часто используется для обозначения части доменного имени.
- givenName: относится к имени человека, а не к фамилии.
- l: Относится к топониму, например, к названию города или другой географической области.
- почта: Адрес электронной почты.
- o:organizationName, что относится к названию организации.
- ou:organizationalUnitName, что относится к названию организационного подразделения.
- SN: фамилия — это фамилия человека.
- telephoneNumber: Номер телефона, на котором должен быть код страны, в которой он находится.
Совет: objectClass — это особый атрибут, который содержит другие использованные атрибуты наряду с самим собой.
Для различных классов объектов обычно существуют обязательные значения свойств и некоторые необязательные значения свойств. Например, вы можете использовать objectClass of person для представления записи пользователя в системе, и пользователь в системе обычно должен иметь такую информацию, как имя, номер телефона, пароль, описание и т.д. Как показано на изображении ниже, для пользователя можно установить имя и фамилию пользователя через cn и sn, что обязательно, а другие атрибуты необязательны.
Ниже приведён список некоторых часто используемых требований objectClass, которые требуются.
- account:userid。
- organization:o。
- Человек: CN и SN.
- organizationalPerson: То же самое, что и человек.
- organizationalRole:cn。
- organizationUnit:ou。
- posixGroup:cn、gidNumber。
- posixAccount:cn、gidNumber、homeDirectory、uid、uidNumber。
(Конец)
|