Я использую 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
в раздел «Сервис» вашего служебного файла. Это создаст для вас каталог.