使所有 SELinux 上下文永久化

使所有 SELinux 上下文永久化

我最近做了很多chcon-ing,但如果我理解正确的话,这些将在下一次重新标记时被删除。有什么方法可以使当前上下文(最好是在某个目录下)永久化?我知道有一种方法可以使用 来完成此操作semanage,但这意味着返回并检查每个文件的上下文并调用semanage以设置规则。那么有没有一些自动化的方法来做到这一点呢?

答案1

首先,您纠正了通过将semanage fcontext -a -t <type> <filepattern>文件更改添加到策略中来使文件更改永久化的问题 - 您需要重新标记或restorecon -R -v <filepattern>应用这些更改。chcon不改变策略,只改变磁盘上下文。

您可以使用以下命令生成与标记策略的差异列表matchpathcon, 具体来说:

matchpathcon -V /path/to/file

不幸的是,它没有递归选项,可能是因为遍历树会很昂贵,但你可以用以下方式驱动它:

find / -exec matchpathcon -V {} \;

不过,要小心。我相信 find 将遍历所有文件系统挂载,包括没有扩展属性(xattrs)的文件系统,这可能会导致问题。当然,如果所有文件系统都有扩展属性,那就没有问题。

一旦有了这个列表,您就可以编写一个脚本来挑选那些您想要的semanage。然而,我不知道有一种自动方法可以一次性完成此操作。

答案2

使用matchpathconwithfind非常慢。为什么不使用restorecon

restorecon -rnv /path/to/dir

这些标志是递归的、不变的且详细的。

相关内容