Не удается присоединить Ubuntu/Linux к Active Directory как пользователь домена. Работает с клиентами Windows.

Вопрос или проблема

Я пытаюсь присоединить компьютер Ubuntu/Linux к домену Active Directory аккаунтом обычного пользователя, который не является членом группы domain-admins.

Я могу без проблем присоединять компьютеры Windows. Для этого не обязательно быть администратором, но у вас должна быть квота на количество компьютеров, которые вы можете присоединить без административных прав.

Но когда я пытаюсь присоединить компьютер с Ubuntu Linux к домену, это не удается с ошибкой, приведенной ниже. Я был бы признателен за любую помощь в этом вопросе.

daniel@linux01:~$ sudo realm join -v -U '[email protected]' AD.example.com
[sudo] password for daniel:
 * Resolving: _ldap._tcp.ad.example.com
 * Performing LDAP DSE lookup on: 10.0.0.10
 * Successfully discovered: ad.example.com
Password for [email protected]:
 * Unconditionally checking packages
 * Resolving required packages
 * LANG=C /usr/sbin/adcli join --verbose --domain ad.example.com --domain-realm AD.example.com --domain-controller 10.0.0.10 --login-type user --login-user [email protected] --stdin-password
 * Using domain name: ad.example.com
 * Calculated computer account name from fqdn: LINUX01
 * Using domain realm: ad.example.com
 * Sending NetLogon ping to domain controller: 10.0.0.10
 * Received NetLogon info from: dc1.ad.example.com
 * Wrote out krb5.conf snippet to /var/cache/realmd/adcli-krb5-iIuXdP/krb5.d/adcli-krb5-conf-eeT5bO
 * Authenticated as user: [email protected]
 * Looked up short domain name: AD
 * Looked up domain SID: S-1-5-21-13313029-848207003-2406435418
 * Using fully qualified name: linux01.ad.example.com
 * Using domain name: ad.example.com
 * Using computer account name: LINUX01
 * Using domain realm: ad.example.com
 * Calculated computer account name from fqdn: LINUX01
 * Generated 120 character computer password
 * Using keytab: FILE:/etc/krb5.keytab
 * Computer account for LINUX01$ does not exist
 * Found well known computer container at: CN=Computers,DC=ad,DC=example,DC=com
 * Calculated computer account: CN=LINUX01,CN=Computers,DC=ad,DC=example,DC=com
 * Encryption type [3] not permitted.
 * Encryption type [1] not permitted.
 ! Insufficient permissions to modify computer account: CN=LINUX01,CN=Computers,DC=ad,DC=example,DC=com: 000020E7: AtrErr: DSID-03153402, #1:
        0: 000020E7: DSID-03153402, problem 1005 (CONSTRAINT_ATT_TYPE), data 0, Att 90008 (userAccountControl):len 4

adcli: joining domain ad.example.com failed: Insufficient permissions to modify computer account: CN=LINUX01,CN=Computers,DC=ad,DC=example,DC=com: 000020E7: AtrErr: DSID-03153402, #1:
        0: 000020E7: DSID-03153402, проблема 1005 (CONSTRAINT_ATT_TYPE), данные 0, Атт 90008 (userAccountControl): длина 4

 ! Недостаточно прав для присоединения к домену
realm: Не удалось присоединиться к области: недостаточно прав для присоединения к домену

Вы не указываете никакое имя контейнера (CN в сообщениях об ошибках), и машина Linux01 вставляется в контейнер “Computers” по умолчанию. Полагаю, у вашего аккаунта недостаточно прав для изменения этого CN, или, скорее всего, он даже не существует в вашем AD, поэтому вам необходимо предоставить полный путь CN.

В Windows при добавлении компьютера в AD графический интерфейс позволяет вам перемещаться по дереву домена и выбирать подходящий контейнер (листья). Вероятно, вам следует добавить запись в файл realm.conf или добавить информацию о OU непосредственно в командную строку.

Настройки по умолчанию в /etc/realmd.conf:

[domain.example.com]
computer-ou = OU=Linux Computers,DC=AD,DC=example,DC=com
# computer-ou = OU=Linux Computers,

В командной строке:

realm join [email protected] AD.example.com --computer-ou='Linux ComputersDC=AD,DC=example,DC=com'

Сначала найдите OU/CN с помощью ldapsearch:

ldapsearch -LLL -H ldap://AD.example.com -b adc,dc=example,dc=com -D 'AD\daniel'  -W '(name=web_servers)' dn

У меня была такая же проблема, и оказалось, что для присоединения системы Linux к домену требуется больше прав, чем для Windows, хотя я не уверен, почему это так.

Я добавил дополнительные права к своему аккаунту для присоединения к домену, следуя этому руководству: https://web.archive.org/web/20201026034739/https://www.computertechblog.com/active-directory-permissions-required-to-join-linux-and-windows-computers-to-a-domain/

Из приведенной выше ссылки:

Стандартные разрешения, необходимые для присоединения систем к AD (Linux и Windows)

  • Сброс пароля
  • Чтение и запись ограничений учетной записи
  • Проверенная запись имени хостов DNS
  • Проверенная запись имени главного объекта службы
  • Чтение и запись атрибутов имени хостов DNS

Дополнительные разрешения, требуемые для Linux систем для присоединения к AD (Linux)

  • Чтение dNSHostName
  • Запись dNSHostName
  • Чтение msDS-AdditionalSamAccountName
  • Запись msDS-AdditionalSamAccountName
  • Чтение msDS-SupportedEncryptionTypes
  • Запись msDS-SupportedEncryptionTypes
  • Чтение операционной системы
  • Запись операционной системы
  • Чтение версии операционной системы
  • Запись версии операционной системы
  • Чтение OperatingSystemServicePack
  • Запись OperatingSystemServicePack
  • Чтение servicePrincipalName
  • Запись servicePrincipalName
  • Чтение userAccountControl
  • Запись userAccountControl
  • Чтение userPrincipal Name
  • Запись userPrincipal Name

ПРИМЕЧАНИЕ: Необходимо показать разрешения “Property-specific”, чтобы увидеть эти дополнительные разрешения.

Связанные темы:

.

Ответ или решение

Для подключения Ubuntu/Linux к домену Active Directory под учетной записью, которая не является членом группы доменных администраторов, необходимо учитывать несколько важных аспектов. Прежде всего, стоит упомянуть, что процесс подсоединения Linux машины к AD отличается от Windows, даже если вы успешно подключаете Windows устройства с помощью обычной учетной записи.

Теория: Основные различия объясняются разной инфраструктурной реализацией этих операционных систем и тем, как они взаимодействуют с AD. В то время как Windows традиционно поддерживает более прямую интеграцию с AD, Linux-системы требуют дополнительных настроек, связанных с безопасностью и управлением учетными записями. Доменная учетная запись должна иметь достаточно привилегий для выполнения всех необходимых изменений в объектах AD, связанных с компьютером. Windows клиентам часто предоставляются разрешения неявно или через другие стандартные настройки, т.к. они чаще встречаются в корпоративных средах с AD. Linux требует более детальной кастомизации на уровне разрешений.

Пример: В представленной ошибке основной фактор, который можно выделить — недостаточные права для изменения учетной записи компьютера в Active Directory. Это выражается в следующей положительной цепочке: "Computer account for LINUX01$ does not exist" и "Insufficient permissions to modify computer account". Таким образом, несмотря на успешную аутентификацию пользователя, отсутствуют права для внесения изменений, необходимых для завершения процесса пприсоединения.

Применение: В данном случае можно воспользоваться несколькими рекомендациями для решения этой проблемы:

  1. Указание контейнера (OU): По умолчанию Linux-системы могут пытаться размещать учетные записи компьютеров в контейнере "Computers", для которого у пользователя нет прав на запись. Укажите подходящий Организационный Юнит (OU), где у пользователя есть права. Это можно сделать через конфигурационный файл /etc/realmd.conf или напрямую в командной строке:

    realm join -U 'daniel@AD.example.com' AD.example.com --computer-ou='OU=Linux Computers,DC=AD,DC=example,DC=com'
  2. Получение дополнительных прав: Необходимо обеспечить вашу учетную запись разрешением на выполнение следующих действий, наряду со стандартными правами, которые есть для Windows:

    • Write/Read dNSHostName
    • Write/Read msDS-AdditionalSamAccountName
    • Write/Read msDS-SupportedEncryptionTypes
    • Write/Read Operating System / Version / Service Pack
    • Write/Read servicePrincipalName
    • Write/Read userAccountControl
    • Write/Read userPrincipalName

    Убеждайтесь, что учетная запись, используемая для присоединения, обладает перечисленными выше привилегиями.

  3. Настройки Kerberos: Убедитесь, что конфигурация Kerberos (/etc/krb5.conf) корректно настроена под вашу доменную структуру.

  4. Проверка сетевых соединений и DNS: Убедитесь, что ваше Linux-устройство может корректно разрешать DNS-имена доменных контроллеров и у него есть доступ к необходимым сетевым ресурсам.

  5. Журналы и логирование: Используйте подробные логи realm и другие инструменты для диагностики, чтобы определить, на каком этапе происходит сбой. Это поможет в дальнейшем определить, где требуется дополнительная коррекция прав.

Следуя этим рекомендациям, вы сможете исправить возникшую проблему и успешно подключить ваше устройство на базе Ubuntu/Linux к домену Active Directory без необходимости быть частью группы доменных администраторов. Это особенно полезно в развертываниях, где безопасность и точный контроль доступа имеют приоритетное значение.

Оцените материал
Добавить комментарий

Капча загружается...