Запуск моей службы Samba4 с помощью systemctl заблокирован. Журнал аудита показывает:
type=AVC msg=audit(1606428851.446:87): avc: denied { execute } for pid=1748 comm="(samba)"
name="samba" dev="dm-0" ino=1462831 scontext=system_u:system_r:init_t:s0
tcontext=unconfined_u:object_r:user_home_t:s0 tclass=file permissive=0
Установка политики Selinux на «разрешающую» решает проблему .... но это не полное решение.
Samba была собрана локально. Это не репо-пакет. Как я понимаю, мне нужно вручную включить его исполняемый путь в Selinux. Но как я могу это сделать?
Файл определения службы выглядит так:
[Unit]
Description=Samba Active Directory Domain Controller
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/samba/sbin/samba -D
PIDFile=/usr/local/samba/var/run/samba.pid
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
В дополнение к ручной компиляции Samba (почему??!?) вы также переместили вместо копирования двоичный файл на место в /usr/local
. Таким образом, он сохранил свой тип SELinux user_home_t
, применяемый к файлам в домашних каталогах пользователей.
Простой restorecon
это исправит.
Конечно, поскольку вы собрали Samba вручную (опять же, ПОЧЕМУ?), многие другие ее файлы будут находиться в местах, которые SELinux не ожидает, поэтому у вас, вероятно, возникнут дополнительные проблемы.