我试图改变它,但它不允许我这样做。
# ls -dZ /usr/local/spamassassin
drwx------. spam spam system_u:object_r:usr_t:s0 /usr/local/spamassassin
# chcon -v --type=spamd_t /usr/local/spamassassin
changing security context of `/usr/local/spamassassin'
chcon: failed to change context of `/usr/local/spamassassin' to `system_u:object_r:spamd_t:s0': Permission denied
audit.log
type=AVC msg=audit(1483587389.449:354941): avc: denied { append } for pid=31588 comm="spamd" name="spamfilter.log" dev=xvde ino=24109 scontext=unconfined_u:system_r:spamd_t:s0 tcontext=unconfined_u:object_r:usr_t:s0 tclass=file
CentOS 版本 6.8(最终版)
答案1
您收到权限被拒绝的原因是 spamd_t 类型不是有效的 SELiunx 类型。您可能需要安装一些软件包才能使其成为有效类型。我不确定。但我会仔细检查您的答案,以确保您遵循最佳实践。
semanage fcontext -a -t spamc_home_t "/usr/local/spamassassin(/.*)?"
这将添加一条规则,以递归方式将 SELinux 类型更改为包括目录本身spamc_home_t
在内的任何内容/usr/local/spamassassin
,但这些更改不会立即生效。
为了使这些更改立即生效,我将在上述命令后立即运行以下命令:
restorecon -rv /usr/local/spamassassin
这将根据系统所拥有的规则恢复默认的 SELinux 上下文。实际上,这与系统重新启动或创建新文件时发生的行为相同。它比使用更好,chcon
因为它从规则集(您刚刚使用上述命令修改的规则集)读取,而不是进行临时的非持久更改。
答案2
# chcon -vR --type=spamc_home_t /usr/local/spamassassin
changing security context of `/usr/local/spamassassin/.bash_profile'
changing security context of `/usr/local/spamassassin/.bash_logout'
changing security context of `/usr/local/spamassassin/.bashrc'
changing security context of `/usr/local/spamassassin/spamfilter.log'
changing security context of `/usr/local/spamassassin'
# semanage fcontext -a -t spamc_home_t "/usr/local/spamassassin(/.*)?"
# service spamassassin restart
Stopping spamd: [ OK ]
Starting spamd: [ OK ]
https://wiki.centos.org/HowTos/SELinux#head-0f6390ddacfab39ee973ed8018a32212c2a02199
我用了
# grep spamd_t /var/log/audit/audit.log | audit2allow
它在评论中吐出了很多上下文,我只能猜猜是哪一个。我不知道如何选择正确的那个。