Вопрос или проблема
У меня есть две OU
: 1.People
2.newOU
. Мой dc
это nodomain
. У меня есть следующий поиск, и всё в порядке:
root@debian:~/ldif# ldapsearch -c -Y EXTERNAL -H ldapi:/// -b dc=nodomain -D cn=admin,dc=nodomain -LLLQ
dn: dc=nodomain
objectClass: top
objectClass: dcObject
objectClass: organization
o: nodomain
dc: nodomain
dn: uid=mohsen,ou=People,dc=nodomain
uid: mohsen
cn: Pahlevanzadeh
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
shadowLastChange: 20121
loginShell: /usr/sbin/csh
uidNumber: 130
gidNumber: 137
homeDirectory: /home/mohsen
gecos: A good boy,,,
dn: ou=newOU,dc=nodomain
objectClass: organizationalUnit
ou: newOU
description: Organizational Unit for Sales Department
dn: uid=naghmeh,ou=newOU,dc=nodomain
uid: naghmeh
cn: maleki
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
shadowLastChange: 20121
loginShell: /usr/sbin/csh
uidNumber: 130
gidNumber: 137
homeDirectory: /home/mohsen
gecos: A good boy,,,
У меня есть два uid: 1.mohsen
под People
. 2.naghmeh
под newOU
Когда я выполняю поиск, как указано выше, но добавляю "ou=newOU"
следующим образом:
ldapsearch -c -Y EXTERNAL "ou=newOU" -H ldapi:/// -b dc=nodomain -D cn=admin,dc=nodomain -LLLQ
Я получаю следующий результат:
dn: ou=newOU,dc=nodomain
objectClass: organizationalUnit
ou: newOU
description: Organizational Unit for Sales Department
К сожалению, я не получил uid
и другую информацию.
Как я могу получить доступ к другой информации через мою OU
?
Ответ или решение
Для решения проблемы, возникшей при поиске информации в каталогах LDAP, важно понять, как именно функционируют запросы LDAP и как они могут быть оптимизированы для достижения желаемого результата.
Теория
LDAP (Lightweight Directory Access Protocol) — это протокол, используемый для доступа и управления распределенными каталогами. Каталоги LDAP являются иерархическими структурами, в которых данные организованы в виде деревьев. Каждый узел дерева имеет уникальный DN (Distinguished Name), который указывает его местоположение в данной иерархии. Объекты в этих каталогах могут содержать различные атрибуты и принадлежать к множеству классов объектов.
При совершении поиска в LDAP, важно правильно указывать базу поиска (-b) и фильтры, чтобы получить нужные результаты. В отличие от реляционных баз данных, в LDAP запросы строятся на основе атрибутов и структурированной иерархии, а не на основе сложных SQL-запросов. Это упрощает доступ к данным, но требует понимания того, как должным образом использовать поисковые фильтры и спецификаторы поиска.
Пример
В вашем случае вы выполняете поиск в каталоге dc=nodomain
и хотите получить не только организационную единицу (OU), но и пользователей внутри этой OU. Запрос, который вы использовали, должен быть настроен таким образом, чтобы не только находить соответствующую организационную единицу, но и включать дочерние элементы в поиск. Однако, в запросе:
ldapsearch -c -Y EXTERNAL "ou=newOU" -H ldapi:/// -b dc=nodomain -D cn=admin,dc=nodomain -LLLQ
используется фильтр "ou=newOU"
, который находит только организационную единицу newOU
, но не загружает вложенные объекты (например, учетные записи пользователей).
Применение
Чтобы решить проблему и получить все объекты внутри newOU
, необходимо использовать более подходящий фильтр и структуру запроса. Один из способов сделать это — использовать subtree
поиск, который рекурсивно ищет внутри всех дочерних объектов от указанного базового DN.
Для выполнения поиска всех учетных записей в организационной единице newOU
, вы можете использовать следующий запрос:
ldapsearch -c -Y EXTERNAL -H ldapi:/// -b ou=newOU,dc=nodomain -D cn=admin,dc=nodomain -LLLQ "(objectClass=*)"
Приведенный выше запрос устанавливает базовое DN как ou=newOU,dc=nodomain
, что означает, что все результаты поиска будут ограничены этой организационной единицей и её дочерними элементами. Фильтр (objectClass=*)
используется для выборки всех объектов, что позволяет получить и организационную единицу, и пользователей внутри неё.
Кроме того, если есть потребность обнаруживать только пользовательские записи внутри newOU
, можно уточнить фильтр поиска, например:
ldapsearch -c -Y EXTERNAL -H ldapi:/// -b ou=newOU,dc=nodomain -D cn=admin,dc=nodomain -LLLQ "(objectClass=posixAccount)"
Этот фильтр (objectClass=posixAccount)
позволит выбрать только те объекты, которые являются пользовательскими учетными записями, использующими класс объекта posixAccount
.
Чтобы обеспечить более гибкие и успешные поиски в будущем, следует убедиться, что вы имеете четкое представление о структуре вашего LDAP-дерева и каких именно данных вы хотите достичь. Если возможны изменения в структуре объектов, это может потребовать соответствующих корректировок в запросе.
Таким образом, знание или понимание организации OU и иерархии каталогов поможет составлять поисковые команды, которые учитывают все сущности и элементы, которые вы хотите увидеть в результатах вашего запроса. Работа с LDAP может быть сложной при инициализации, но с опытом и правильным применением фильтров и структур она становится мощным инструментом для управления доступом и справочными данными в IT-инфраструктуре.