SELinux:手动更改/ etc / selinux / targeted / contexts / files /

我正在设置一个CentOS 7服务器,其中/home目录必须位于另一个分区上,然后用bind-mount进行挂载。 所以: /data/homes /home应该绑定到/home

问题是确保SELinux上下文正确应用。 事实上,以下命令的结果是相互矛盾的:

 # Applies the rules for /home to all the files restorecon -R -v /home # Applies the generic rules (standard files) to all the files restorecon -R -v /data/homes 

如果系统必须重新标记文件,这会造成问题。

为了解决这个问题,我通过复制/data/homes所有规则来修改策略文件/etc/selinux/targeted/contexts/files/file_contexts.homedirs

 $ sed -n '/^\/home/p' /etc/selinux/targeted/contexts/files/file_contexts.homedirs \ | sed 's/^\/home/\/data\/homes/' \ >> /etc/selinux/targeted/contexts/files/file_contexts.homedirs 

但是,当使用semodule -B重新构build策略时,我的更改将丢失。

我知道修改这些文件的build议方法是使用semanage fcontext ,但是总共有将近200条我需要添加的规则,并且semanage for each都不能运行semanage for each

如何手动更改/etc/selinux/targeted/contexts/files/file_contexts并确保保留更改?

 semanage fcontext -a -t <file_context> "<path>/<file>(/.*)?" restorecon -R <path>/<file> 

将允许您recursion地和永久地将上下文添加到许多文件。 我不确定你是否已经尝试过。 你能提供一些你想要设置的规则的例子,以及什么文件,以便我们看到你的需求是可行的吗?