我们通过“semanage fcontext ...”命令向 SELinux 添加了一些特定的上下文。这些模式存储在 /etc/selinux/targetd/contexts/files/file_contexts.local 中。
假设我们希望在不同的计算机上实现相同的权限,或者必须在该计算机上重新安装操作系统,将 file_contexts.local 放在正确的位置是否足够?是否需要采取任何其他步骤来使 SELinux 进程并使用该文件?
操作系统:RHEL 6.7
谢谢你!
答案1
除了复制/etc/selinux/targetd/contexts/files/file_contexts.local
文件之外,您还需要restorecon
对 中引用的目录和文件运行命令/etc/selinux/targetd/contexts/files/file_contexts.local
。
执行此操作的一个简单方法(同时还为 SELinux 默认值引用的系统中的所有文件设置/etc/selinux/targetd/contexts/files/file_contexts
SELinux 上下文)是运行以下命令:
$ sudo restorecon -R /
笔记:该-R
标志意味着递归到子目录和文件,从而恢复系统上所有文件的上下文,如file_context
和file_context.local
文件中所定义。
编辑:正如 Sourcejedi 在评论中明智地指出的那样。在整个文件系统上运行restorecon
可能会尝试更改不支持它的文件系统(即已安装的驱动器等)上的标签。您可以使用该fixfiles restore
命令来避免此问题。
从fixfiles
手册页:
By default it will relabel all mounted ext2, ext3, xfs and jfs file systems as
long as they do not have a security context mount option. The file
/etc/selinux/fixfiles_exclude_dirs can contain a list of directories
excluded from relabeling.
您还可以使用fixfiles onboot
它将在下次重新启动时重新标记。
同样,touch /.autorelabel && reboot
将在重新启动期间重新标记文件/