我正在使用带有 stunnel 的 CentOS 7.3。如果我像这样启动 stunnel:
stunnel /etc/stunnel/stunnel.conf
一切正常!
我想使用 systemd 来管理 stunnel。这是我的 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)
如果我使用 /var/run/stunnel/ 更改 CHROOT 目录,它就会起作用!SELinux 不会阻止创建 stunnel PID。但是,如果我重新启动,/var/run/stunnel 目录就会被删除!
不禁用 SELinux 的情况下,使用 systemd 管理 stunnel 的最佳方法是什么?也许可以更改一些 SELinux 配置?
谢谢你,
答案1
您应该将其添加RuntimeDirectory=stunnel
到服务文件的“服务”部分。这将为您创建目录。