Bug 35449
| Summary: | [Active Directory] Не редактируется ФИО пользователя | ||
|---|---|---|---|
| Product: | Sisyphus | Reporter: | Alexander Shemetov <berkut_174> |
| Component: | alterator-ldap-users | Assignee: | Andrey Cherepanov <cas> |
| Status: | NEW --- | QA Contact: | qa-sisyphus |
| Severity: | normal | ||
| Priority: | P3 | CC: | boyarsh, cas, lav, manowar, sem |
| Version: | unstable | ||
| Hardware: | all | ||
| OS: | Linux | ||
Причина второй половины отчёта (ошибка "No such Base DN" на кириллическом CN) найдена в коде, и она жива в alterator-ldap-users 0.8.6-alt3 (задание https://packages.altlinux.org/tasks/351649/; последнее содержательное изменение — декабрь 2021). backend3/ldap-users:110-113, read_ad_cn(): samba-tool-plus user getpassword "$1" --attributes=cn | sed -n '/^cn:/ { s/^cn:[[:space:]]*//; p; q }' Для CN не из ASCII LDIF отдаёт атрибут в base64 в виде "cn:: <base64>", а sed срезает только "cn:" и оставляет ": 0JLQ…". Воспроизводится без домена: $ printf 'cn:: 0JLQvtCy0LAg0JLQvtCy0LjQvQ==\n' | sed -n -e '/^cn:/ { s/^cn:[[:space:]]*//; p; q }' : 0JLQvtCy0LAg0JLQvtCy0LjQvQ== — ровно то, что попало в сообщение об ошибке репортёра. Рядом, в backend3/ldap-users:382-385, чтение атрибутов формы "::" base64 декодирует — забыто только это место. Первая половина (поля ФИО заблокированы, когда CN ≠ логин) — сознательное ограничение: коммит e565d1e (31.08.2017) "Disallow to modify the user full name fields for CN=FullName", backend3/ldap-users:575-581 обнуляет givenname/sn. Переименование через "samba-tool user rename --surname/--given-name" (есть в Samba ≥ 4.9) не реализовано. Примерная правка read_ad_cn (не собирал): read_ad_cn() { assert_netcmdplus || return 1 $netcmdplus user getpassword "$1" --attributes='cn' | while read -r key val; do case "$key" in cn::) printf '%s\n' "$val" | base64 -d; echo; break ;; cn:) printf '%s\n' "$val"; break ;; esac done } |

Description
Alexander Shemetov 2018-09-26 18:58:16 MSK