Попытка обнаружения приемлемых базовых DN DN для LDAP для разных серверов каталогов в сценарии bash

В принципе, я пишу скрипт, который определяет приемлемое значение по умолчанию для базового DN при указании на конкретное имя хоста. Я обматываю его вывод ldapsearch .

  • Я могу делать Active Directory, глядя прямо на корневую DSE и вытягивая defaultNamingContext
  • Я могу сделать Domino, начав одноуровневый поиск непосредственно под фильтрацией DSE для dominoOrganization objectClass и просто беря первый (это по умолчанию, поэтому, если это неверно, можно ожидать, что он просто изменит его).
  • Я могу сделать OpenLDAP, посмотрев прямо на корневую DSE и извлекая первое значение namingContexts

Но я бы тоже хотел, чтобы это поддерживало eDirectory на всякий случай. Проблема в том, что у меня нет никаких установок eDirectory для просмотра, и это не бесплатное программное обеспечение, поэтому я не могу установить тестовую версию, чтобы увидеть, как она настроена.

Глядя на сайт Novell, похоже, что они действительно не делают ту же самую defaultNamingContext что и AD, и они определенно не собираются делать объектный класс dominoOrganization. Большинство примеров DN, которые я видел для eDirectory, выглядят так, что они также используют o=OrganizationName как в Domino, но я также видел o=OrganizationName,C=US поэтому, если аббревиатура страны могла или не могла быть в базовом DN, я должен был бы сделать больше, чем просто один_уровень.

Хуже того, если сервер каталогов разделен (например, некоторые конфигурации AD) или похож на Domino, где есть много встроенных организаций по умолчанию, которые не отражают, где вы найдете важную информацию LDAP. Например, в примере Domino LDAP, который я сейчас просматриваю, есть организация O=RSA Data Security\, Inc.,C=US .

Есть ли какой-то конкретный objectClass, который я могу фильтровать, если я начну поиск в корневом DSE? Я понимаю, что это дорогостоящий поиск (esp, если мне нужно перейти полностью к области), но это должно быть вещь типа «один раз в то время».

Короче говоря: какие идентифицирующие атрибуты имеет база организации компании в eDirectory и как ее найти, если я установил свою базу поиска в корневую DSE?

Я бы предпочел примеры, так как я не смогу проверить работу своего кода до тех пор, пока не столкнусь с необходимостью запуска этого сценария на сервере eDirectory (мы – высшее образование, так что это определенно возможно).

  • Как установить CONFIG_PREEMPT_NONE в RHEL 6.4 (linux)
  • Zabbix web install Redhat конфликты php
  • Fedora или OpenSuse? который принимает меня к философии семьи redhat / centos
  • Как мы можем разрешить пользователям без полномочий root управлять сервисом system.d?
  • Ядерная паника после создания ядра в Red Hat Linux?
  • Кто-нибудь использует Red Hat Enterprise Linux для настольных компьютеров или рабочих станций дома?
  • Что включать в RPM, созданный из пакетов python
  • .exrc файл в домашнем каталоге не эффективен
  • One Solution collect form web for “Попытка обнаружения приемлемых базовых DN DN для LDAP для разных серверов каталогов в сценарии bash”

    Похоже, что namingContext довольно распространен для корневого объекта DSE в большинстве каталогов. Таким образом, разумное умолчание обычно просто принимает первый (если только спецификация DSA не устанавливает одно значение по умолчанию, как в случае AD). Если у них есть экзотическая конфигурация, где есть несколько разделов / DIT на одной и той же DSA, отличной от AD, тогда те же самые администраторы, вероятно, также будут иметь sw00ft, достаточно знать, что такое подходящее базовое DN, если первый namingContext не тот, который мы следует искать пользователей / групп.

    Псевдокод для запуска автоматического обнаружения для базовых значений DN по умолчанию для различных DSA:

      # Active Directory Test # rootDSE lists acceptable default base DN for us If "1.2.840.113556.1.4.800" in rootDSE["supportedCapabilities"]: defaultBase = rootDSE["defaultNamingContext"] # IBM Domino LDAP Test # Take the dn of the first dominoOrganization Object we find If "IBM Lotus Software" == rootDSE["vendorname"] ldapsearch -LLL "objectClass=dominoOrganization" dn | head -1 # eDirectory Test # Take the first Partition Object we find If "Novell Inc." == rootDSE["vendorName"] ldapsearch -LLL "objectClass=Partition" dn | head -1 # OpenLDAP Tests # This is the same as the default action so not technically required but it shows # how you identify OpenLDAP DSA's. It's possible to nest some additional checks/searches # here for the various types of top level containers (For example to prefer domain # container-style entries to org-style, etc). If "OpenLDAProotDSE" in rootDSE["objectClass"] ldapsearch -LLL -b '' -s base namingContext | head -1 # Apache DS Tests # Same as above, not technically required but it shows how you identify Apache DS If "Apache Software Foundation" in rootDSE["vendorName"] ldapsearch -LLL -b '' -s base namingContext | head -1 # Default to taking the first namingContext attribute if present but no tests works If $(ldapsearch -LLL -b '' -s base namingContexts | head -1 | cut -d: -f2 | wc -c ) > 1 ldapsearch -LLL -b '' -s base namingContext | head -1 # I'm out of ideas on how to find a base DN so ultimately default to something explicit return "(null)" 

    Определение хорошего базового DN из DSA OpenLDAP :

     [root@policyServer ~]# ldapsearch -x -LLL -H ldap://localhost -b '' -s base + | egrep "^namingContexts:" | head -1 | cut -d: -f2 dc=trunkator,dc=com [root@policyServer ~]# 

    Для справки, это тот самый DSA с полным корневым DSE (я гарантировал, что для полной иллюстрации указано несколько DIT):

     [root@policyServer ~]# ldapsearch -x -LLL -H ldap://localhost -b '' -s base + dn: structuralObjectClass: OpenLDAProotDSE configContext: cn=config monitorContext: cn=Monitor namingContexts: dc=trunkator,dc=com namingContexts: dc=localhost supportedControl: 2.16.840.1.113730.3.4.18 supportedControl: 2.16.840.1.113730.3.4.2 supportedControl: 1.3.6.1.4.1.4203.1.10.1 supportedControl: 1.2.840.113556.1.4.319 supportedControl: 1.2.826.0.1.3344810.2.3 supportedControl: 1.3.6.1.1.13.2 supportedControl: 1.3.6.1.1.13.1 supportedControl: 1.3.6.1.1.12 supportedExtension: 1.3.6.1.4.1.1466.20037 supportedExtension: 1.3.6.1.4.1.4203.1.11.1 supportedExtension: 1.3.6.1.4.1.4203.1.11.3 supportedExtension: 1.3.6.1.1.8 supportedFeatures: 1.3.6.1.1.14 supportedFeatures: 1.3.6.1.4.1.4203.1.5.1 supportedFeatures: 1.3.6.1.4.1.4203.1.5.2 supportedFeatures: 1.3.6.1.4.1.4203.1.5.3 supportedFeatures: 1.3.6.1.4.1.4203.1.5.4 supportedFeatures: 1.3.6.1.4.1.4203.1.5.5 supportedLDAPVersion: 3 supportedSASLMechanisms: GSSAPI entryDN: subschemaSubentry: cn=Subschema 
    Linux и Unix - лучшая ОС в мире.