Устранение неполадок участников домена Samba: различия между версиями

Материал из ALT Linux Wiki
Строка 246: Строка 246:


====Вывод групп пользователя====
====Вывод групп пользователя====
|id
$ id
|выводит группы пользователя
Работает и под root и под обычным пользователем.
{| class="wikitable collapsible"  style="float:center; margin-left:2em"
!colspan="2"|Вывод
|-
!Локальная система
!Доменная
|-
|включают только локальные<br>(или был произведен вход<br>под локальным пользователем)
|включают только локальные<br>(или был произведен вход<br>под локальным пользователем)
|включают в себя доменные
|включают в себя доменные
|Работает и под root и под обычным пользователем.
|}
|-
 
====Вывод групп пользователя====
====Вывод групп пользователя====
|groups
|groups

Версия от 13:36, 20 апреля 2023

Устранение неполадок участников домена Samba

Общее

Настройка уровня логов Samba

Первым делом настройте уровень логов Samba.

Команде net не удается подключиться по адресу 127.0.0.1

Используя настройки по-умолчанию, команда net подключается к адресу 127.0.0.1. Если Samba не слушает петлевой интерфейс, подключение не удастся. Например:

# net rpc rights list -U administrator
Enter administrator's password:
Could not connect to server 127.0.0.1
Connection failed: NT_STATUS_CONNECTION_REFUSED

Для решения данной проблемы, настройте Samba на дополнительное прослушивание петлевого интерфейса. Для подробностей см. Configure Samba to Bind to Specific Interfaces.

В качестве временного решения проблемы, можно использовать ключ -I IP_address или -S host_name после команды net.

getent не находит доменных пользователей и групп

Вы выполняете getent passwd или же getent group? Использование этих команд без параметров winbind enum users = yes и winbind enum groups = yes в файле smb.conf не будет отображать пользователей и группы домена. Добавление строк имеет обратную сторону, оно замедляет работу, и чем больше у вас пользователей и групп, тем медленнее могут работать команды, поэтому вам следует добавлять эти строки только в целях тестирования.

Если

getent passwd demo01

ничего не возвращает, попробуйте ввести:

getent passwd "SAMDOM\demo01"

если данная команда работает, а первая нет, вам может потребоваться добавить следующую строку в файл smb.conf

winbind use default domain = yes

v2

Пример:

  • Домен: DOMAIN.RU
  • WG: DOMAIN
  • Хост: Client
Команда Что делает Локальная система Доменная Комментарий
system-auth status Выводит текущую схему аутентификации local ad DOMAIN.RU CLIENT DOMAIN Вместо DOMAIN и CLIENT система выведет имена домена и клиента.
Команда работает только из под root. Для работы нужен пакет alterator-auth.
control system-auth Выводит систему аутентификации. local sss Команда работает только из под root.
systemctl status sssd (winbind) Статус служб бэкендов Samba not be found (inactive) active (active) Работает и под root и под обычным пользователем.
net ads info Информация о домене Ошибка, о недоступности серверов, способных обработать запрос Вывод информации Работает и под root и под обычным пользователем.
host kdc_ip Выводит имя хоста kdc по IP - (мы не знаем адрес) Вывод PTR-записи KDC Вместо kdc_ip введите IP адрес KDC из команды net ads info.
Работает и под root и под обычным пользователем.
ping kdc_ip Пингует kdc-сервер - (мы не знаем адрес) пинг идет Вместо kdc_ip введите IP адрес KDC из команды net ads info
Работает и под root и под обычным пользователем.
KRB5_TRACE=/dev/stdout kinit user Получение билета Kerberos с подробным логом Ошибка, что записи Kerberos не найдены (то, что в описании) Работает и под root и под обычным пользователем. Вместо user введите нужного Вам доменного пользователя.
net ads testjoin Информация о проверке связи с доменом Ошибка о том, что хост не настроен как член домена Join is ok Работает только под root
getent passwd выводит список пользователей выводит список локальных пользователей выводит список локальных пользователей Работает и под root и под обычным пользователем.
id выводит группы пользователя включают только локальные
(или был произведен вход
под локальным пользователем)
включают в себя доменные Работает и под root и под обычным пользователем.
groups выводит группы пользователя включают только локальные
(или был произведен вход
под локальным пользователем)
включают в себя доменные Работает и под root и под обычным пользователем.
ssh user@localhost Проверяет доступ по ssh подключается под локальным SSH подключается под локальным SSH Должна быть включена служба sshd. Работает и под root и под обычным пользователем.
Вход в DM Пускает пользователя в графическую часть + +

Вывод текущей схемы аутентификации

Примечание: Для работы нужен пакет alterator-auth.
# system-auth status

Команда работает только из под root.

Примечание: Вместо DOMAIN и CLIENT система выведет имена домена и клиента.
Вывод
Локальная система Доменная
local ad DOMAIN.RU CLIENT DOMAIN

Вывод системы аутентификации

# control system-auth

Команда работает только из под root

Вывод
Локальная система Доменная
local sss

Статус служб бэкендов Samba

$ systemctl status sssd
$ systemctl status winbind

Команда работает и под root и под обычным пользователем.

Вывод
Бэкэнд Локальная система Доменная
sssd not be found active
winbind inactive active

Информация о домене

$ net ads info

Команда работает и под root и под обычным пользователем.

Вывод
Локальная система Доменная
Ошибка, о недоступности серверов, способных обработать запрос Вывод информации

Вывод имени хоста kdc по IP

$ host kdc_ip
Примечание: Вместо kdc_ip введите IP адрес KDC из команды net ads info.

Команда работает и под root и под обычным пользователем.

Вывод
Локальная система Доменная
- (мы не знаем адрес) Вывод PTR-записи KDC

Пинг kdc-сервера

$ ping kdc_ip
Примечание: Вместо kdc_ip введите IP адрес KDC из команды net ads info.

Команда работает и под root и под обычным пользователем.

Вывод
Локальная система Доменная
- (мы не знаем адрес) Пинг идет

Получение билета Kerberos с подробным логом

$ KRB5_TRACE=/dev/stdout kinit user

Работает и под root и под обычным пользователем.

Примечание: Вместо user введите нужного Вам доменного пользователя.
Вывод
Локальная система Доменная
Ошибка, что записи Kerberos не найдены Получение билета Kerberos с подробным логом

Информация о проверке связи с доменом

# net ads testjoin

Работает только под root

Вывод
Локальная система Доменная
Ошибка о том, что хост не настроен как член домена Join is ok

Выводит списка пользователей

$ getent passwd

Работает и под root и под обычным пользователем.

Вывод
Локальная система Доменная
выводит список локальных пользователей выводит список локальных пользователей

Вывод групп пользователя

$ id

Работает и под root и под обычным пользователем.

Вывод
Локальная система Доменная
включают только локальные
(или был произведен вход
под локальным пользователем)
включают в себя доменные

Вывод групп пользователя

|groups |выводит группы пользователя |включают только локальные
(или был произведен вход
под локальным пользователем) |включают в себя доменные |Работает и под root и под обычным пользователем. |-

Проверка доступа по ssh

|ssh user@localhost |Проверяет доступ по ssh |подключается под локальным SSH |подключается под локальным SSH |Должна быть включена служба sshd. Работает и под root и под обычным пользователем. |-

Вход в DM

Примечание: Пускает пользователя в графическую часть
Локальная система Доменная
+ +

Участник леса домена в лесу ActiveDirectory

Устранение неполадок при вводе в домен

Домен DNS не настроен. Не удается выполнить обновление DNS. (No DNS domain configured. Unable to perform DNS Update.)

Если при присоединении хоста к Active Directory (AD) команда net не может обновить DNS:

# net ads join -U administrator
Enter administrator's password:
Using short domain name -- SAMDOM
Joined 'AD-Member' to dns domain 'samdom.example.com'
No DNS domain configured for AD-Member. Unable to perform DNS Update.
DNS update failed: NT_STATUS_INVALID_PARAMETER

Обратите внимание, что ввод в домен прошел успешно, и произошел сбой только при обновлении DNS.

После присоединения клиента к домену команда net находит полное доменное имя (FQDN) с помощью библиотек переключателя службы имен (NSS). Если полное доменное имя не может быть разрешено, например, с помощью DNS или файла /etc/hosts, обновление DNS завершается ошибкой.

Решение проблемы:

Добавьте IP-адрес и полное доменное имя в файл /etc/hosts. Например:

10.99.0.5     AD-Member.samdom.example.com     AD-Member

Запустите команду net ads join снова.

Если динамические обновления DNS по-прежнему не работают, проверьте на DNS-сервере AD, работают ли динамические обновления.

Ошибка обновления DNS: ERROR_DNS_UPDATE_FAILED

Если при вводе компьютера в домен Active Directory (AD), команда net завершается с ошибкой, говорящей об обновлении DNS:

# net ads join -U administrator
Enter administrator's password:
Using short domain name -- SAMDOM
Joined 'M1' to dns domain 'samdom.example.com'
DNS Update for m1.samdom.example.com failed: ERROR_DNS_UPDATE_FAILED
DNS update failed: NT_STATUS_UNSUCCESSFUL

Обратите внимание, что ввод в домен прошел успешно, и произошел сбой только при обновлении DNS.

Решение проблемы:

Ошибка обновления DNS: ERROR_DNS_GSS_ERROR

При использовании BIND9_DLZ-бэкенда динамические обновления DNS могут завершаться ошибкой из-за неправильной настройки Kerberos на контроллере домена AD (DC), на котором запущен DNS-сервер:

# net ads join -U administrator
Enter administrator's password:
Using short domain name -- SAMDOM
Joined 'AD-Member' to dns domain 'samdom.example.com'
DNS Update for AD-Member.samdom.example.com failed: ERROR_DNS_GSS_ERROR
DNS update failed: NT_STATUS_UNSUCCESSFUL

Для решения проблемы нужно перенастроить Samba с бэкэндом BIND9:

# samba_upgradedns --dns-backend=BIND9_DLZ
Reading domain information
DNS accounts already exist
No zone file /usr/local/samba/private/dns/SAMDOM.EXAMPLE.COM.zone
DNS records will be automatically created
DNS partitions already exist
dns-DC1 account already exists
See /usr/local/samba/private/named.conf for an example configuration include file for BIND
and /usr/local/samba/private/named.txt for further documentation required for secure DNS updates
Finished upgrading DNS

И после этого перезапустить службу bind.[i]

Ошибка gss_init_sec_context: Разная ошибка: слишком большой перекос часов (gss_init_sec_context failed with: Miscellaneous failure: Clock skew too great)

Если при подключении хоста к домену AD команда net завершается следующей ошибкой:

# net ads join -U administrator 
Enter administrator's password:
gss_init_sec_context failed with [ Miscellaneous failure (see text): Clock skew too great]
kinit succeeded but ads_sasl_spnego_gensec_bind(KRB5) failed: An internal error occurred.
Failed to join domain: failed to connect to AD: An internal error occurred.

Обратите внимание на строку gss_init_sec_context failed with [ Miscellaneous failure (see text): Clock skew too great]. Она говорит о большом рассинхроне времени между контроллером домена и клиентом.

Kerberos требует синхронизированного времени для предотвращения атак повторного воспроизведения. Время на клиенте не должно отличаться от КД более чем на 5 минут.

Для исправления ошибки, установите правильное время и запустите команду net ads join снова.

Не удалось присоединиться к домену: не удалось найти контроллер домена для домена SAMDOM — неопределенная ошибка

Если при присоединении клиента к Active Directory (AD) команде net не удается найти контроллер домена (DC):

# net ads join -U administrator
Enter administrator's password:
Failed to join domain: failed to find DC for domain SAMDOM - Undetermined error

Samba использует DNS-запросы и широковещательные рассылки для обнаружения контроллеров домена при присоединении к домену. Если оба метода не срабатывают, отображается ошибка: failed to find DC for domain SAMDOM - Undetermined error.

В качестве краткосрочного решения вы можете передать команде параметр "-S" и имя контроллера домена. Например:

# net ads join -U administrator -S DC1.samdom.example.com

Однако в AD важна правильная конфигурация DNS. Чтобы избежать будущих проблем, связанных с неправильной конфигурацией DNS, корректней настроить конфигурацию преобразователя DNS. Дополнительные сведения см. в разделе Конфигурация DNS для Linux и Unix.

Winbind и проблемы с аутентификацией

Утилита getent не может вывести список всех пользователей или групп домена

Если утилита getent может вывести отдельных пользователей или группы домена, но команды getent passwd или же getent group не могут вывести список всех пользователей или групп домена:

  • Убедитесь, что коммутатор службы имен (name service switch, NSS) может использовать библиотеку libnss_winbind. Подробнее см. Libnss winbind Links

Включите следующие параметры в вашем файле smb.conf:

winbind enum users = yes
winbind enum groups = yes

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

Перезагрузите Samba:

# smbcontrol all reload-config

Участник леса домена в домене NT4

В настоящее время здесь нет контента.