在 /run 下设置持久 SELinux 文件类型

在 /run 下设置持久 SELinux 文件类型

我使用 将文件设置为特定类型semanage fcontext,并且使用restorecon确实正确设置了文件类型。但是,重新启动后,类型会恢复为默认类型。如果我restorecon再次运行,它会更新为正确的类型。此文件存在于 下/run/,有没有办法让此权限更改在重新启动后保持不变?

我跑了semanage fcontext -a -t httpd_sys_content_t /var/run/myfile

答案1

您已将文件放入 中,/runsemanage fcontext命令引用 中的路径/var/run。虽然在现代系统上这是 中的符号链接/run,但如果您直接在 中创建文件/run,则该路径永远不会匹配。尝试修复该问题;它应该是/run而不是/var/run

答案2

SELinux fcontext 配置用于设置默认selinux filecontext,由 restorecon 应用。

setype: _default它也可能被其他程序应用,例如当 Ansible 使用具有/指定的复制任务创建文件时seuser: _default

当文件/目录由 systemd tmpfiles 创建时也会发生类似情况。

然而,当你的 fcontext 规则匹配的文件是由一些不关心 SELinux 默认文件上下文的服务创建的,那么父目录是继承的:

新文件将继承创建它们的目录所指定的类型。

来源:https://access.redhat.com/articles/6999267#file-context-10

除了让你的程序查找和应用默认的 SELinux 文件上下文之外,你还可以执行以下操作之一:

  1. 通过/runSystemd 的RuntimeDirectory=指令或 systemd临时文件配置,为该目录创建一个 fcontext 规则/var/run/yourserve,并将您的服务配置为创建/run/yourservice/myfile而不是/run/myfile。一般来说,这也应该更安全。
  2. 声明文件名转换在您的自定义 SELinux 策略模块中。

相关内容