Назад | Перейти на главную страницу

Почему SELinux блокирует команды пользовательского экземпляра systemctl --user / systemd?

У меня есть несколько систем Fedora 27. Мне достаточно комфортно с SELinux. Я запускаю его на всех своих системах с отключенным "неограниченным" модулем.

В этой конкретной системе SELinux блокирует все команды "systemctl --user":

$ systemctl --user status
Failed to read server status: Access denied

Это работало до недавнего времени. Не знаю, что изменилось. я сделал обновился с Fedora 26 до Fedora 27 недавно, но я не думаю, что сроки совпадают с этой проблемой.

Что меня смущает и мешает понять, что делать дальше, так это то, что в auditd вообще ничего нет.

В системном журнале я получаю:

Dec 25 09:48:07 jukni systemd[669]: selinux: avc:  denied  { status } for auid=n/a uid=1086 gid=1086 cmdline="" scontext=staff_u:staff_r:staff_t:s0-s0:c0.c1023 tcontext=staff_u:staff_r:staff_t:s0-s0:c0.c1023 tclass=system permissive=0

Далее это:

$ systemctl --user restart lojban_mediawiki_web
Failed to restart lojban_mediawiki_web.service: Access denied
See user logs and 'systemctl --user status lojban_mediawiki_web.service' for details.

Выдает это в системном журнале:

Dec 25 09:49:06 jukni systemd[669]: selinux: avc:  denied  { start } for auid=n/a uid=1086 gid=1086 path="/home/sampre_mw/.config/systemd/user/lojban_mediawiki_web.service" cmdline="" scontext=staff_u:staff_r:staff_t:s0-s0:c0.c1023 tcontext=staff_u:object_r:systemd_unit_file_t:s0 tclass=service permissive=0

Я не могу найти в поиске ничего о self: system, и все, что я могу найти в https://github.com/TresysTechnology/refpolicy.git или https://github.com/TresysTechnology/refpolicy-contrib.git является:

policy/modules/kernel/kernel.te
481:    allow can_load_kernmodule self:system module_load;

policy/modules/system/init.te
225:    allow init_t self:system { status reboot halt reload };

В других моих подобных системах этой проблемы нет. Перезагрузка перезагрузки не помогла. Контексты файлов пользовательских модулей:

$ ls -lZ ~/.config/systemd/user/
total 8
drwxr-xr-x. 2 sampre sampre staff_u:object_r:user_home_t:s0  66 Feb  6  2017 default.target.wants
-rw-rw-r--. 1 sampre sampre staff_u:object_r:user_home_t:s0 417 Jul 14 00:32 jbotcan_database.service
-rw-rw-r--. 1 sampre sampre staff_u:object_r:user_home_t:s0 419 Jul 14 00:32 jbotcan_site.service

, что я понятия не имею, правильно это или нет.

Изменение логина этого пользователя на sysadm_u или user_u тоже не помогло.

Я понятия не имею, куда идти дальше. Я имею в виду, что я мог бы создать специальный модуль для реализации AVC, которые собираются в syslog, но это похоже на The Wrong Thing (tm), поскольку очевидно, что ОС не поставлялась без этой работы.

Добавлено:

$ cat /etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

Добавлено # 2:

Я перезагрузил один из своих других ящиков Fedora 27 и:

Jan  5 23:31:38 vrici systemd[5992]: selinux: avc:  denied  { status } for auid=n/a uid=1000 gid=1000 cmdline="" scontext=staff_u:staff_r:staff_t:s0-s0:c0.c1023 tcontext=staff_u:staff_r:staff_t:s0-s0:c0.c1023 tcla

ss = системное разрешение = 0

что делает его больше похожим на ошибку с systemd или selinux.

Я думаю, вам нужно перейти на sysadm_r роль, может попробовать:

sudo -u <your_user> -r sysadm_r -t sysadm_t systemctl --user status?

Это действительно может быть ошибкой в ​​политике, пользователи должны иметь возможность управлять своими собственными сервисами IMVHO (по сравнению с системными). Я думаю, вам следует сообщить об этом в Fedora selinux-policy пакет.

Кроме того, вы пытались переименовать файловую систему с помощью restorecon -RFv /? Это заставит (-F) сбросить дополнительный идентификатор.