如何从一个目录复制 SELinux 上下文并将其应用到另一个目录?

如何从一个目录复制 SELinux 上下文并将其应用到另一个目录?

如何从一个目录复制 SELinux 上下文并将其应用到另一个目录?

示例使用场景是在默认 /home 路径之外创建新的本地用户,如下所示:

$ sudo useradd -d /websites Tim

这将创建 Tim 的主目录/websites并为 Tim 设置正确的权限和所有权,但其 SELinux 上下文与其他用户不同,如下所示:

# ls -dZ /websites
drwx------. Tim Tim system_u:object_r:etc_runtime_t:s0 /websites

我想要做的是从其他用户的 /home 目录复制 SELinux 上下文并将其应用到 Tim 的/websites目录。

其他用户的SELinux上下文是这样的:

# ls -Z /home/
drwx------. Ben  Ben  unconfined_u:object_r:user_home_dir_t:s0 Ben
drwx------. Bob  Bob  unconfined_u:object_r:user_home_dir_t:s0 Bob
drwx------. lexy lexy unconfined_u:object_r:user_home_dir_t:s0 lexy

答案1

这可以简单地使用-a-e标志来完成,如下所示:

semanage fcontext -a -e /home/Ben '/websites(/.*)?' 

-a: 添加,

-e: 等价


之后,您必须运行 Restorecon,如下所示:

restorecon -vvRF /websites

并且将应用新的文件上下文。

-v:显示文件标签的更改,

-R:递归,

-F:强制重置上下文


还可以使用以下命令更改 SELinux 文件上下文:

semanage fcontext -a -t httpd_sys_content_t '/website(/.*)?'

不管怎样,这都会分配新的文件上下文。

-a: 添加,

-t: 类型

相关内容