Bug 44924

Summary: Не работает добавления компьютера в дочернем OU (sub OU)
Product: Sisyphus Reporter: alexunderboots <al.tar44046>
Component: alterator-authAssignee: Andrey Cherepanov <cas>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: al.tar44046, alimektor, boyarsh, kolesnichenko, shevtsov.anton, sin
Version: unstable   
Hardware: all   
OS: Linux   

Description alexunderboots 2023-01-15 08:23:16 MSK
При добавлении в домен компов p10 некорректно работает YOU
Работает в таком виде [--
createcomputer="COMPUTEROU"]

Но с вложенными OU уже не срабатывает ни так [--createcomputer="COMPUTEROU, СШ5"] ни так [--createcomputer="ou=COMPUTEROU,ou=СШ5"]
Comment 1 Evgeny Shesteperov 2023-01-16 10:03:30 MSK
Добрый день!

Пожалуйста, дополнительно предоставьте следующую информацию:

1. Операционная система, версия, на которой воспроизвелась ошибка.
2. Выводы следующих команд:

        $ uname -a
        $ cat /etc/os-release
        $ apt-repo

3. Опишите шаги воспроизведения, ожидаемый результат.
Comment 2 alexunderboots 2023-01-16 15:12:17 MSK
(Ответ для Evgeny Shesteperov на комментарий #1)
> Добрый день!
> 
> Пожалуйста, дополнительно предоставьте следующую информацию:
> 
> 1. Операционная система, версия, на которой воспроизвелась ошибка.
> 2. Выводы следующих команд:
> 
>         $ uname -a
>         $ cat /etc/os-release
>         $ apt-repo
> 
> 3. Опишите шаги воспроизведения, ожидаемый результат.

Linux gp5m-332-01 5.10.82-std-def-alt1 #1 SMP Fri Dec 3 14:49:25 UTC 2021 x86_64 GNU/Linux

NAME="ALT Workstation"
VERSION="10.1"
ID=altlinux
VERSION_ID=10.1
PRETTY_NAME="ALT Workstation 10.1 (Autolycus)"
ANSI_COLOR="1;33"
CPE_NAME="cpe:/o:alt:workstation:10.1"
BUILD_ID="ALT Workstation 10.0"
HOME_URL="https://basealt.ru/"
BUG_REPORT_URL="https://bugs.altlinux.org/"

rpm http://repo-fix.adm72.local/local-p10 x86_64 local-p10
rpm http://repo-fix.adm72.local/local-p10 x86_64-i586 local-p10
rpm http://repo-fix.adm72.local/local-p10 noarch local-p10
rpm http://repo-fix.adm72.local/altlinux p10/branch/x86_64 classic
rpm http://repo-fix.adm72.local/altlinux p10/branch/x86_64-i586 classic
rpm http://repo-fix.adm72.local/altlinux p10/branch/noarch classic

Установили, настроили, накатили все обновления с кернелом и при добавлении в домен не можем добавить в подгруппу OU, только в сам OU
Comment 3 Evgeny Shesteperov 2023-01-16 15:37:25 MSK
(Ответ для alexunderboots на комментарий #2)
> (Ответ для Evgeny Shesteperov на комментарий #1)
> > Добрый день!
> > 
> > Пожалуйста, дополнительно предоставьте следующую информацию:
> > 
> > 1. Операционная система, версия, на которой воспроизвелась ошибка.
> > 2. Выводы следующих команд:
> > 
> >         $ uname -a
> >         $ cat /etc/os-release
> >         $ apt-repo
> > 
> > 3. Опишите шаги воспроизведения, ожидаемый результат.
> 
> Linux gp5m-332-01 5.10.82-std-def-alt1 #1 SMP Fri Dec 3 14:49:25 UTC 2021
> x86_64 GNU/Linux
> 
> NAME="ALT Workstation"
> VERSION="10.1"
> ID=altlinux
> VERSION_ID=10.1
> PRETTY_NAME="ALT Workstation 10.1 (Autolycus)"
> ANSI_COLOR="1;33"
> CPE_NAME="cpe:/o:alt:workstation:10.1"
> BUILD_ID="ALT Workstation 10.0"
> HOME_URL="https://basealt.ru/"
> BUG_REPORT_URL="https://bugs.altlinux.org/"
> 
> rpm http://repo-fix.adm72.local/local-p10 x86_64 local-p10
> rpm http://repo-fix.adm72.local/local-p10 x86_64-i586 local-p10
> rpm http://repo-fix.adm72.local/local-p10 noarch local-p10
> rpm http://repo-fix.adm72.local/altlinux p10/branch/x86_64 classic
> rpm http://repo-fix.adm72.local/altlinux p10/branch/x86_64-i586 classic
> rpm http://repo-fix.adm72.local/altlinux p10/branch/noarch classic
> 
> Установили, настроили, накатили все обновления с кернелом и при добавлении в
> домен не можем добавить в подгруппу OU, только в сам OU

Попробую воспроизвести.
Comment 4 Evgeny Shesteperov 2023-01-17 15:20:51 MSK
Версия
======

- alterator-auth-0.43.15-alt1

Дистрибутивы
============

- p10-workstation-10-x86-64, обновленный до Sisyphus

Стенд
=====

- p10-server-10-x86-64, обновленный до Sisyphus
    - в качестве сервера Samba
    - доменное имя: dc.samba.testdomain
- p10-workstation-10-x86-64, обновленный до Sisyphus
    - в качестве клиента Samba
    - доменное имя: testpc.samba.testdomain

Шаги воспроизведения
====================

1. На сервере Samba установить ADMC:
   
        # apt-get install -y admc
   
2. Запустить ADMC:
   
        $ kinit Administrator
        $ admc
   
3. Создать подразделение COMPUTEROU с помощью ADMC: ПКМ по samba.testdomain → Создать → Подразделение, ввести имя COMPUTEROU.
4. Создать субподразделение SUBCOMPUTEROU с помощью ADMC: ПКМ по созданному подразделению COMPUTEROU → Создать → Подразделение, ввести имя SUBCOMPUTEROU.
5. ПКМ по созданному подразделению SUBCOMPUTEROU → Создать → Компьютер, задать имя testpc, нажать ОК.
   
   В итоге получилось следующее дерево:
   
        samba.testdomain
        └── COMPUTEROU
            └── SUBCOMPUTEROU
                └── testpc
   
6. На клиенте (Workstation) выполнить следующий сценарий:
   
        # apt-get install -y task-auth-ad-sssd
        # DOMAINNAME="samba.testdomain"
        # SERVERIP=<Адрес сервера SAMBA>
        # hostnamectl set-hostname testpc
        # echo -e "name_servers=$SERVERIP\nsearch_domains=$DOMAINNAME" >> /etc/resolvconf.conf
        # reboot
   
7. После перезагрузки выполнить ввод в домен с использованием опции --createcomputer=SUBCOMPUTEROU:
   
        # system-auth write ad SAMBA.TESTDOMAIN $(hostname --short) SAMBA Administrator '<Пароль администратора SAMBA>' --createcomputer=SUBCOMPUTEROU

Ожидаемый результат: присоединение к домену.

Фактический результат: ошибка, что такого объекта нет

    Failed to join domain: failed to precreate account in ou ou="SUBCOMPUTEROU",dc=SAMBA,dc=TESTDOMAIN: No such object

Аналогично с опцией --createcomputer=COMPUTEROU,SUBCOMPUTEROU:

    Failed to join domain: failed to precreate account in ou ou="COMPUTEROU,SUBCOMPUTEROU",dc=SAMBA,dc=TESTDOMAIN: No such object

Воспроизводится в P10.
Comment 5 kolesnichenko 2023-06-07 15:22:46 MSK
Добрый день. Столкнулся с такой же проблемой.

При выполнении команды:
# system-auth write ad test.alt host333 domain 'administrator' 'Gfhjkm123' --createcomputer="TestOU,TestJoin"
Failed to join domain: failed to precreate account in ou ou="TestOU,TestJoin",dc=TEST,dc=ALT: No such object

Просмотрел скрипт system-auth, он передаёт аргумент дальше на net ads join. В мане net нашёл, что можно указывать OU в виде "TestOU/TestJoin" (с разделителем '/')

Попробовал команду:
# system-auth write ad test.alt host333 domain 'administrator' 'Gfhjkm123' --createcomputer="TestOU/TestJoin"
Failed to join domain: failed to precreate account in ou "TestOU/TestJoin": Invalid DN syntax

Изменил немного скрипт system-auth в 17 строке:
'--createcomputer') shift; OU="createcomputer=\"$1\""; shift;;
на
'--createcomputer') shift; OU="createcomputer=$1"; shift;;
т.е. убрал кавычки и команда успешно отработала (машина присоединена к домену и добавлена в нужную OU).
Но такое решение работает, как я понимаю, только если в названиях OU нет пробелов.

Параметры машины:

# uname -a
Linux host333.test.alt 5.10.179-std-def-alt1 #1 SMP Fri Apr 28 16:59:34 UTC 2023 x86_64 GNU/Linux

# cat /etc/os-release
NAME="ALT Workstation"
VERSION="10.1"
ID=altlinux
VERSION_ID=10.1
PRETTY_NAME="ALT Workstation 10.1 (Autolycus)"
ANSI_COLOR="1;33"
CPE_NAME="cpe:/o:alt:workstation:10.1"
BUILD_ID="ALT Workstation 10.0"
HOME_URL="https://basealt.ru/"
BUG_REPORT_URL="https://bugs.altlinux.org/"

# apt-repo
rpm [p10] http://ftp.altlinux.org/pub/distributions/ALTLinux p10/branch/x86_64 classic
rpm [p10] http://ftp.altlinux.org/pub/distributions/ALTLinux p10/branch/x86_64-i586 classic
rpm [p10] http://ftp.altlinux.org/pub/distributions/ALTLinux p10/branch/noarch classic
Comment 6 Anton Shevtsov 2023-06-07 15:53:54 MSK
Подтверждаю проблему. Пока выкрутился так

diff -u /usr/sbin/system-auth.orig /usr/sbin/system-auth
--- /usr/sbin/system-auth.orig	2023-06-07 17:29:12.983845612 +0500
+++ /usr/sbin/system-auth	2023-06-07 17:51:41.921873329 +0500
@@ -14,7 +14,7 @@
 while [[ $# -gt 0 ]]; do
   case "$1" in
     '-d') set -x; shift;;
-    '--createcomputer') shift; OU="createcomputer=\"$1\""; shift;;
+    '--createcomputer') shift; OU="createcomputer=$1"; shift;;
     '--windows2003')  win2003="true"; shift;;
     '--winbind')  use_winbind="true"; shift;;
     --) shift;;
@@ -720,7 +720,7 @@
 	IFS=: read -r OS_NAME OS_VER <<<"$(hostnamectl | sed -E -n 's/^.*Operating System: (.*) ([0-9.]+).*$/\1:\2/p')"
 
 	# Join to domain
-	$net_cmd ads join --use-kerberos=required --no-dns-updates --use-krb5-ccache="$krb_ccache_name" $OU osName="$OS_NAME" osVer="$OS_VER"
+	$net_cmd ads join --use-kerberos=required --no-dns-updates --use-krb5-ccache="$krb_ccache_name" "${OU}" osName="$OS_NAME" osVer="$OS_VER"
 
 	[ "$?" -ne 0 ] && return 1



system-auth write ad ad2012r2.dom host-27 ad2012r2 da-01 'Qwerty1' --createcomputer="NewCompUnit/Sub\ Comp\ Unit"

Using short domain name -- AD2012R2
Joined 'HOST-27' to dns domain 'ad2012r2.dom'
Successfully registered hostname with DNS
Comment 7 Anton Shevtsov 2023-06-08 07:58:28 MSK
Также есть ошибка с описанием опций
 system-auth write ad domain.name host workgroup [Administrator password] [--windows2003] [--createcomputer="ou=COMPUTEROU"] [--winbind]

в частности --createcomputer="ou=COMPUTEROU" должно быть указано, как
--createcomputer="COMPUTEROU" т.е. без ou=
Comment 8 Repository Robot 2023-10-19 13:47:35 MSK
alterator-auth-0.44.6-alt1 -> sisyphus:

 Thu Oct 19 2023 Andrey Cherepanov <cas@altlinux> 0.44.6-alt1
 - system-auth: fix join to sub OU (ALT #44924)