| Summary: | Прошу рассмотреть возможность добавить дополнительную опцию | ||
|---|---|---|---|
| Product: | Sisyphus | Reporter: | Anton Shevtsov <shevtsov.anton> |
| Component: | alterator-auth | Assignee: | Evgeny Sinelnikov <sin> |
| Status: | ASSIGNED --- | QA Contact: | qa-sisyphus |
| Severity: | normal | ||
| Priority: | P5 | CC: | amakeenk, boyarsh, sin |
| Version: | unstable | ||
| Hardware: | x86_64 | ||
| OS: | Linux | ||
перепутал исходный с новым
--- /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. Давайте, я добавлю соответствующий функционал. |
Суть проблемы. Всегда, для ввода в домен использовал 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 т.е. добавится последний, опциональный параметр.