我的 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 是在本地构建的。它不是 repo 包。因此,据我所知,我必须在 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
答案1
除了手动编译 Samba(为什么?!)之外,您还将二进制文件移至 而不是 复制到 中/usr/local
。因此,它保留了其 SELinux 类型user_home_t
,应用于用户主目录中的文件。
一个简单的方法restorecon
就能解决这个问题。
当然,由于您手动构建了 Samba(再次,为什么?),它的许多其他文件将位于 SELinux 意想不到的位置,因此您可能会遇到更多问题。