如何使用 SELinux 更改 CentOS 中目录的安全上下文?

如何使用 SELinux 更改 CentOS 中目录的安全上下文?

我试图改变它,但它不允许我这样做。

# 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

它在评论中吐出了很多上下文,我只能猜猜是哪一个。我不知道如何选择正确的那个。

相关内容