Суть проблемы. Всегда, для ввода в домен использовал net ads join ..,. -S адрес_pdc более правильный, как мне сказали, способ это system-auth write ad .... Но в обычном виде, я всегда натыкаюсь на /usr/sbin/system-auth: строка 595: 15461 Ошибка сегментирования $net_cmd ads join -U"$user%$password" --no-dns-updates Дело в том, что у нас десятки AD серверов, в винде нужный AD сервер выбирается на основе sites, в линухе же судя по логу - первый какой ответил, либо рандомно. Хотя предпочтительный ad_site указано для sssd.conf, но в данном случае оно видимо не используется. Таким образом хватается первый попавшийся хостнейм AD сервера иполучаем тыквы в виде сегфолта т.к. сервера хоть и наши, но могут быть закрыты фаерволами или еще каким либо административными барьерами. Поэтому я всегда уазывал для net ads имя target server. В случае с system-auth такой возможности нет. Я предлагаю ее добавить diff -u /usr/sbin/system-auth /usr/sbin/system-auth.old --- /usr/sbin/system-auth 2021-09-13 11:22:01.900287879 +0500 +++ /usr/sbin/system-auth.old 2021-09-13 10:13:31.517935645 +0500 @@ -598,7 +598,6 @@ local user="$2" local password="$3" local host_name="$4" - local target_server="$5" [ -x /usr/bin/kinit ] || fatal "krb5-kinit is required for join to Active Directory domain" [ -x "$net_cmd" ] || fatal "$net_cmd from samba-common or samba-common-tools package is required for join to Active Directory domain" @@ -627,8 +626,8 @@ set_hostname "$host_name.$ldomain" # Join to domain - [ -n "$target_server" ] && $net_cmd ads join -U"$user%$password" --no-dns-updates || $net_cmd ads join -U"$user%$password" -S "$target_server" --no-dns-updates - + $net_cmd ads join -U"$user%$password" --no-dns-updates + [ "$?" -ne 0 ] && return 1 # Register machine in domain DNS @@ -782,7 +781,7 @@ # Store configuration parameters: domain [hostname] [workgroup] write_ad_conf "$1" "$2" "$3" # Join computer to domain - join_ad_domain "$1" "$4" "$5" "$2" "$6" + join_ad_domain "$1" "$4" "$5" "$2" [ "$?" -ne 0 ] && exit 1 # prepare auth service if [ -e "$sssd_conf" ]; then и тогда строка подключения будет выглядеть как-то так /usr/sbin/system-auth write ad ADM72.LOCAL alt-test-04l ADM72 domainadmin pa$$word my_ad_server.adm72.local т.е. добавится последний, опциональный параметр.
перепутал исходный с новым --- /usr/sbin/system-auth.old 2021-09-13 10:13:31.517935645 +0500 +++ /usr/sbin/system-auth 2021-09-13 11:22:01.900287879 +0500 @@ -598,6 +598,7 @@ local user="$2" local password="$3" local host_name="$4" + local target_server="$5" [ -x /usr/bin/kinit ] || fatal "krb5-kinit is required for join to Active Directory domain" [ -x "$net_cmd" ] || fatal "$net_cmd from samba-common or samba-common-tools package is required for join to Active Directory domain" @@ -626,8 +627,8 @@ set_hostname "$host_name.$ldomain" # Join to domain - $net_cmd ads join -U"$user%$password" --no-dns-updates - + [ -n "$target_server" ] && $net_cmd ads join -U"$user%$password" --no-dns-updates || $net_cmd ads join -U"$user%$password" -S "$target_server" --no-dns-updates + [ "$?" -ne 0 ] && return 1 # Register machine in domain DNS @@ -781,7 +782,7 @@ # Store configuration parameters: domain [hostname] [workgroup] write_ad_conf "$1" "$2" "$3" # Join computer to domain - join_ad_domain "$1" "$4" "$5" "$2" + join_ad_domain "$1" "$4" "$5" "$2" "$6" [ "$?" -ne 0 ] && exit 1 # prepare auth service if [ -e "$sssd_conf" ]; then
В последней доработке добавлена возможно аутентификации через кеш ключей kerberos, поэтому опциональные разумнее делать именно опциями, вроде --target-server. Давайте, я добавлю соответствующий функционал.