Bug 52892

Summary: systemd-sysusers не поддерживает /etc/tcb
Product: Sisyphus Reporter: Vitaly Lipatov <lav>
Component: systemdAssignee: Alexey Shabalin <shaba>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: aen, arseny, boria138, egori, gorjachevas, respublica, sem, shaba, sin
Version: unstable   
Hardware: x86_64   
OS: Linux   
URL: https://lore.altlinux.org/devel/3e24c7b0-10fd-4b3b-9c33-b682cf0236f4@ya.ru/
Bug Depends on:    
Bug Blocks: 52893    

Description Vitaly Lipatov 2025-02-01 03:16:20 MSK
При создании пользователя через systemd-sysusers
он создаёт файл /etc/shadow, вместо /etc/tcb/USER/shadow

Из-за этого, в частности, созданных пользователей нельзя удалить:


sudo userdel nixbld10
userdel: не удалось заблокировать /etc/tcb/nixbld10/shadow; попробуйте ещё раз позже.

Каталога /etc/tcb/nixbld10/ вообще нет

С группами так же

sudo groupdel nixbld

groupdel: не удалось удалить первичную группу пользователя «nixbld01»
Comment 1 Arseny Maslennikov 2025-05-21 19:04:07 MSK
В довольно свежем rpm-s-m реализовали явную поддержку^W супорт:
https://fedoraproject.org/wiki/Changes/RPMSuportForSystemdSysusers

Если это бекпортировать, то можно даже не полагаться на %pre, как предлагали в bug 52893.
Comment 2 Arseny Maslennikov 2025-05-21 19:19:22 MSK
Есть два возможных подхода к проблеме.

Один заключается в том, чтобы запатчить systemd-sysusers (иначе говоря, переписать по меньшей мере добрую треть src/sysusers/sysusers.c) и реализовать там поддержку tcb, а далее попробовать заапстримить. (Получилось же заапстримить поддержку passwdqc в homed?)

Второй сводится к тому, чтобы просто написать sysusers.c; по оценке, это 500 строк на Си, если писать под лозунгом worse is better, и до 1500, если вылизывать мелочи.
Для non-systemd установок этот вариант, очевидно, приятнее.
Некоторая доля кода src/sysusers/sysusers.c заключается в синергии с остальным проектом systemd, и её можно не повторять (или повторить не сразу).
Comment 3 Vitaly Lipatov 2025-05-22 09:02:54 MSK
(Ответ для Arseny Maslennikov на комментарий #2)
...
> Второй сводится к тому, чтобы просто написать sysusers.c; по оценке, это 500
Может быть тогда просто вызывать из него useradd, чтобы не дублировать логику?
Comment 4 Алексей Горячев 2025-10-06 17:02:26 MSK
С версии systemd-257.9-alt1 ошибка не воспроизводится.
Comment 5 Vitaly Lipatov 2026-02-10 15:49:18 MSK
(Ответ для Алексей Горячев на комментарий #4)
> С версии systemd-257.9-alt1 ошибка не воспроизводится.


+        %{?_enable_tcb:-Dtcb=true} \
         %{?_enable_ldconfig:-Dldconfig=true} \
         -Dbootloader=%{?_enable_bootloader:enabled}%{!?_enable_bootloader:disabled} \
         -Dukify=%{?_enable_bootloader:enabled}%{!?_enable_bootloader:disabled} \
@@ -2608,6 +2611,9 @@ fi
 * Thu Jun 26 2025 Alexey Shabalin <shaba@altlinux.org> 1:257.7-alt1
 - 257.7.
 
+* Fri Jun 06 2025 Maria Alexeeva <alxvmr@altlinux.org> 1:257.6-alt2
+- Add tcb support in sysusers.

Сама поддержка TCB добавлена коммитом ранее:

commit 10827c18d8ddbd5e3bd7a15b9cc9a5071f5b7bb5
Author: Maria Alexeeva <alxvmr@altlinux.org>
Date:   Wed May 28 18:24:49 2025 +0400

    sysusers: Add tcb support
    
    (cherry picked from commit d29d905009c9f3163e5b201bbb4beece1ad1eb61)