<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>40903</bug_id>
          
          <creation_ts>2021-09-13 09:38:50 +0300</creation_ts>
          <short_desc>Прошу рассмотреть возможность добавить дополнительную опцию</short_desc>
          <delta_ts>2023-03-23 22:58:15 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>alterator-auth</component>
          <version>unstable</version>
          <rep_platform>x86_64</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anton Shevtsov">shevtsov.anton</reporter>
          <assigned_to name="Evgeny Sinelnikov">sin</assigned_to>
          <cc>amakeenk</cc>
    
    <cc>boyarsh</cc>
    
    <cc>sin</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>202676</commentid>
    <comment_count>0</comment_count>
    <who name="Anton Shevtsov">shevtsov.anton</who>
    <bug_when>2021-09-13 09:38:50 +0300</bug_when>
    <thetext>Суть проблемы.
Всегда, для ввода в домен использовал 
net ads join ..,. -S адрес_pdc

более правильный, как мне сказали, способ это 
system-auth write ad ....

Но в обычном виде, я всегда натыкаюсь на  
/usr/sbin/system-auth: строка 595: 15461 Ошибка сегментирования                   $net_cmd ads join -U&quot;$user%$password&quot; --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=&quot;$2&quot;
     local password=&quot;$3&quot;
     local host_name=&quot;$4&quot;
-    local target_server=&quot;$5&quot;
 
     [ -x /usr/bin/kinit ] || fatal &quot;krb5-kinit is required for join to Active Directory domain&quot;
     [ -x &quot;$net_cmd&quot; ] || fatal &quot;$net_cmd from samba-common or samba-common-tools package is required for join to Active Directory domain&quot;
@@ -627,8 +626,8 @@
        set_hostname &quot;$host_name.$ldomain&quot;
 
        # Join to domain
-       [ -n &quot;$target_server&quot; ] &amp;&amp; $net_cmd ads join -U&quot;$user%$password&quot;  --no-dns-updates ||  $net_cmd ads join -U&quot;$user%$password&quot; -S &quot;$target_server&quot; --no-dns-updates
-
+       $net_cmd ads join -U&quot;$user%$password&quot; --no-dns-updates
+
        [ &quot;$?&quot; -ne 0 ] &amp;&amp; return 1
 
        # Register machine in domain DNS
@@ -782,7 +781,7 @@
                 # Store configuration parameters: domain [hostname] [workgroup]
                 write_ad_conf &quot;$1&quot; &quot;$2&quot; &quot;$3&quot;
                 # Join computer to domain
-                join_ad_domain &quot;$1&quot; &quot;$4&quot; &quot;$5&quot; &quot;$2&quot; &quot;$6&quot;
+                join_ad_domain &quot;$1&quot; &quot;$4&quot; &quot;$5&quot; &quot;$2&quot;
                 [ &quot;$?&quot; -ne 0 ] &amp;&amp; exit 1
                 # prepare auth service
                 if [ -e &quot;$sssd_conf&quot; ]; then

и тогда строка подключения будет выглядеть как-то так

/usr/sbin/system-auth write ad ADM72.LOCAL alt-test-04l ADM72 domainadmin pa$$word my_ad_server.adm72.local

т.е. добавится последний, опциональный параметр.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202677</commentid>
    <comment_count>1</comment_count>
    <who name="Anton Shevtsov">shevtsov.anton</who>
    <bug_when>2021-09-13 09:42:01 +0300</bug_when>
    <thetext>перепутал исходный с новым

--- /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=&quot;$2&quot;
     local password=&quot;$3&quot;
     local host_name=&quot;$4&quot;
+    local target_server=&quot;$5&quot;
 
     [ -x /usr/bin/kinit ] || fatal &quot;krb5-kinit is required for join to Active Directory domain&quot;
     [ -x &quot;$net_cmd&quot; ] || fatal &quot;$net_cmd from samba-common or samba-common-tools package is required for join to Active Directory domain&quot;
@@ -626,8 +627,8 @@
        set_hostname &quot;$host_name.$ldomain&quot;
 
        # Join to domain
-       $net_cmd ads join -U&quot;$user%$password&quot; --no-dns-updates
-
+       [ -n &quot;$target_server&quot; ] &amp;&amp; $net_cmd ads join -U&quot;$user%$password&quot;  --no-dns-updates ||  $net_cmd ads join -U&quot;$user%$password&quot; -S &quot;$target_server&quot; --no-dns-updates
+
        [ &quot;$?&quot; -ne 0 ] &amp;&amp; return 1
 
        # Register machine in domain DNS
@@ -781,7 +782,7 @@
                 # Store configuration parameters: domain [hostname] [workgroup]
                 write_ad_conf &quot;$1&quot; &quot;$2&quot; &quot;$3&quot;
                 # Join computer to domain
-                join_ad_domain &quot;$1&quot; &quot;$4&quot; &quot;$5&quot; &quot;$2&quot;
+                join_ad_domain &quot;$1&quot; &quot;$4&quot; &quot;$5&quot; &quot;$2&quot; &quot;$6&quot;
                 [ &quot;$?&quot; -ne 0 ] &amp;&amp; exit 1
                 # prepare auth service
                 if [ -e &quot;$sssd_conf&quot; ]; then</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223308</commentid>
    <comment_count>2</comment_count>
    <who name="Evgeny Sinelnikov">sin</who>
    <bug_when>2023-03-23 22:58:15 +0300</bug_when>
    <thetext>В последней доработке добавлена возможно аутентификации через кеш ключей kerberos, поэтому опциональные разумнее делать именно опциями, вроде --target-server.

Давайте, я добавлю соответствующий функционал.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>