使所有 SELinux 上下文永久化

bri*_*rns 9 selinux

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

小智 5

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

您可以使用 生成与标记策略的差异列表matchpathcon,特别是:

matchpathcon -V /path/to/file
Run Code Online (Sandbox Code Playgroud)

不幸的是,它没有递归选项,可能是因为走树会很昂贵,但您可以使用以下方法驱动它:

find / -exec matchpathcon -V {} \;
Run Code Online (Sandbox Code Playgroud)

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

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