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

CentOS с SELinux, systemd и stunnel

Я использую CentOS 7.3 с stunnel. Если я запускаю stunnel вот так:

stunnel /etc/stunnel/stunnel.conf

Все отлично работает!

Я хотел бы управлять stunnel с помощью systemd. Вот мой stunnel.service:

[Unit]
Description=SSL tunnel for network daemons
Documentation=man:stunnel https://www.stunnel.org/docs.html
DefaultDependencies=no
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target
Alias=stunnel.target

[Service]
Type=forking
EnvironmentFile=-/etc/stunnel/stunnel.conf
ExecStart=/usr/bin/stunnel /etc/stunnel/stunnel.conf
ExecStop=/usr/bin/killall -9 stunnel
RemainAfterExit=yes

И мой stunnel.conf:

cert = /etc/stunnel/ssl/stunnel.crt
chroot = /var/chroot/stunnel
setuid = stunnel
setgid = stunnel
pid = /stunnel.pid
[https]
accept = 443
connect = 80

Проблема в следующем: если chroot - это / var / chroot / stunnel (каталог и разрешения в порядке!) SELinux блокирует создание PID, когда я это делаю:

systemctl start stunnel

В моем / var / log / secure у меня есть:

Feb 20 15:12:11 kickstart stunnel: LOG3[2505:140354907637824]: Cannot create pid file /stunnel.pid
Feb 20 15:12:11 kickstart stunnel: LOG3[2505:140354907637824]: create: Permission denied (13)

Если я изменю каталог CHROOT на / var / run / stunnel /, он заработает! SELinux не блокирует создание stunnel PID. Но если я перезагружусь, каталог / var / run / stunnel исчезнет!

Как лучше всего управлять stunnel с помощью systemd без отключения SELinux? Может быть, поменять какие-нибудь конфигурации SELinux?

Спасибо,

Вы должны добавить RuntimeDirectory=stunnel в раздел «Сервис» вашего служебного файла. Это создаст для вас каталог.