Вопрос или проблема
Я пытаюсь присоединить компьютер 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”, чтобы увидеть эти дополнительные разрешения.
Связанные темы:
- Невозможно присоединить к домену с помощью samba tool net или realm/sssd
- Аккаунт для чтения AD, присоединения компьютера к домену, удаления учетных записей компьютеров и перемещения компьютеров в OU
- Недостаточно прав при попытке установки атрибутов ОС машины при присоединении Linux сервера к Active Directory
.
Ответ или решение
Для подключения 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". Таким образом, несмотря на успешную аутентификацию пользователя, отсутствуют права для внесения изменений, необходимых для завершения процесса пприсоединения.
Применение: В данном случае можно воспользоваться несколькими рекомендациями для решения этой проблемы:
-
Указание контейнера (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'
-
Получение дополнительных прав: Необходимо обеспечить вашу учетную запись разрешением на выполнение следующих действий, наряду со стандартными правами, которые есть для 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
Убеждайтесь, что учетная запись, используемая для присоединения, обладает перечисленными выше привилегиями.
-
Настройки Kerberos: Убедитесь, что конфигурация Kerberos (
/etc/krb5.conf
) корректно настроена под вашу доменную структуру. -
Проверка сетевых соединений и DNS: Убедитесь, что ваше Linux-устройство может корректно разрешать DNS-имена доменных контроллеров и у него есть доступ к необходимым сетевым ресурсам.
-
Журналы и логирование: Используйте подробные логи realm и другие инструменты для диагностики, чтобы определить, на каком этапе происходит сбой. Это поможет в дальнейшем определить, где требуется дополнительная коррекция прав.
Следуя этим рекомендациям, вы сможете исправить возникшую проблему и успешно подключить ваше устройство на базе Ubuntu/Linux к домену Active Directory без необходимости быть частью группы доменных администраторов. Это особенно полезно в развертываниях, где безопасность и точный контроль доступа имеют приоритетное значение.