Три дефекта в backend3/net-domain, найденные при перепроверке #33437 на текущем Сизифе. Свожу в один баг, поскольку все они в одном файле; если удобнее разбирать порознь — скажите, разнесу. Стенд: клоны шаблонов poligon (sisyphus-server, textmode), dist-upgrade 2026-09-17, x86_64. Версии: alterator-net-domain-0.7.3-alt4, alterator-openldap-0.9-alt2, openldap-servers-2.6.13-alt1, alt-domain-server-0.5.3-alt1, samba-dc-4.22.11-alt3, alterator-5.4.6-alt1. Код цитируется по ветке sisyphus (packages/gears/a/alterator-net-domain.git). 1. test_kdc зовёт ldapsearch с ключом -h, которого больше нет в openldap -------------------------------------------------------------------- alterator-net-domain/backend3/net-domain:127: "$_ldapsearch" -x -h localhost -b "$dn" -D "$slapd_rootdn" "ou=kdcroot" -w"$slapd_rootpw" | ... alterator-net-domain/backend3/net-domain:133: "$_ldapsearch" -x -h localhost -b "$dn" -D "$slapd_rootdn" "objectClass=krbRealmContainer" -w"$slapd_rootpw" | ... В openldap 2.6 (openldap-servers-2.6.13-alt1) опция -h удалена: # ldapsearch -x -h localhost -b dc=altdom,dc=test ou=kdcroot ldapsearch: invalid option -- 'h' Поэтому обе проверки всегда ложны и в ЦУС статус KDC всегда ERROR, даже на исправно работающем домене: # alterator-cmdline /net-domain action read kdc:ERROR: Failed to ldapsearch ou=kdcroot -- no KDC base in LDAP С -H запись находится: # ldapsearch -x -H ldap://localhost -b dc=altdom,dc=test -D "$rootdn" -w"$pw" ou=kdcroot | grep numEntries # numEntries: 1 Рядом, в test_ldap (строки 82, 88), уже используется -H — нужно привести строки 127 и 133 к тому же виду (`-H ldap://localhost`). Примерный патч (пересборкой не проверялся, на стенде проверялась только сама команда ldapsearch): - "$_ldapsearch" -x -h localhost -b "$dn" ... + "$_ldapsearch" -x -H ldap://localhost -b "$dn" ... 2. Пароль Administrator попадает в лог в /tmp (проблема безопасности) -------------------------------------------------------------------- При создании AD-домена вывод samba-tool пишется в лог в /tmp: alterator-net-domain/backend3/net-domain:303: local log="/tmp/samba-dc-provision-$(date +%d.%m.%Y-%H:%M:%S)-$domain_name.log" Случайный пароль Administrator из лога вырезается фильтром: alterator-net-domain/backend3/net-domain:350: ) | grep -v '^Admin[[:space:]]\+password:' >>"$log.process" Фильтр рассчитан на строку вида `Admin password: ...` в начале строки, а нынешний samba-tool печатает её в формате INFO: INFO ... #496: Admin password: ... Такая строка под шаблон `^Admin[[:space:]]\+password:` не подходит и остаётся в логе. В результате на стенде пароль администратора домена лежал открытым текстом в /tmp/samba-dc-provision-17.09.2026-10:14:34-test.alt.log с правами 0644 — то есть читаемым любому локальному пользователю, и в /tmp, который не чистится до перезагрузки. Там же, в ветке создания AD-домена, есть отладочный сброс окружения бэкенда: alterator-net-domain/backend3/net-domain:773: env > /tmp/net-domain.txt Окружение бэкенда содержит параметры формы (in_ad_password читается тут же, строка 792), то есть в этот файл попадает и пароль, введённый администратором в ЦУС. Этот пункт — по чтению кода, сам файл на стенде я не смотрел; строку, судя по всему, надо просто убрать. Ожидаемый результат: пароли не пишутся в файлы в /tmp; если лог провижна нужен — он должен лежать в /var/log с правами 0600, а фильтрация пароля не должна зависеть от формата строки samba-tool (надёжнее подставлять пароль явно через --adminpass и не полагаться на вырезание из вывода). 3. write для ALT-домена возвращает успех при упавшем slapd --------------------------------------------------------- # alterator-cmdline /net-domain action write domain altdom.test domain_type altdomain EXIT=0 (никакой ошибки пользователю не показано) # systemctl is-active slapd krb5kdc smb bind failed failed inactive active В коде служба поднимается без проверки результата, дальше выполняется запись домена и публикация сервиса: alterator-net-domain/backend3/net-domain:745: service_control 'slapd' on/start alterator-net-domain/backend3/net-domain:756: write_domain "$in_domain" "1" && \ Провал старта виден только потом, в `action read` (ldap:ERROR: Connect to ldaps://... failed). Для сравнения, в ветке AD результат провижна проверяется и отдаётся через write_error (строки 352-362). Ожидаемый результат: если slapd/krb5kdc не поднялись, write должен отдавать write_error с указанием службы и места, куда смотреть (journalctl -u slapd), а не сообщать об успехе. (Конкретно в моём прогоне slapd не стартовал из-за #48706 — кавычек в SLAPDURLLIST; но реакция бэкенда на упавшую службу от причины падения не зависит.) Четвёртый дефект, найденный там же — сырой текст `%(_ 'NOT OK (samba service is stopped)')` в строке 640 — уже заведён как #55385, здесь не повторяю.
Подтверждаю по коду alterator-net-domain 0.7.3-alt4 (установленный backend3/net-domain): строки 127/133 — ldapsearch -x -h localhost (openldap 2.6: "ldapsearch: invalid option -- 'h'"), строка 350 — grep -v '^Admin[[:space:]]\+password:', строка 773 — env > /tmp/net-domain.txt (в окружении есть пароль администратора). Сам провижн через модуль не запускал.