首页 > 解决方案 > 允许在 SELinux 中对具有不同上下文的不同文件进行具有自定义上下文的守护进程操作

问题描述

特殊类型的允许规则

我已经从具有自定义上下文的可执行文件创建了正在运行的守护进程,例如:

system_u:system_r:daemon_name_t

它将递归遍历整个目录并读取(不打开)这些未知文件(这些文件可以有任何上下文,不仅来自其域),所以我想用 scontextdaemon_name_t任何目标上下文编写类型强制规则。在编写类型强制规则时,我希望它尽可能地限制。我不想给它上下文unconfined_t

例如,如果我需要允许操作getattr并且read我想获得这种效果:

allow daemon_name_t { * } :file { getattr read };

我找不到任何可能的方法来做到这一点SELinux。这甚至可能吗?任何帮助表示赞赏。

编辑:我发现有一种方法可以对 file_type 强制执行允许规则,如下所示:

allow daemon_name_t file_type:{type1 type2} {getattr read};

目前对我来说已经足够了,但如果有更好的解决方案,我会很高兴。

标签: linuxredhatfedoraselinux

解决方案


SELinux 策略包含简化此类编写规则的接口。可用接口列在策略 API 文档中(文档应由您的发行版中的selinux-policy-doc包提供)。例如合适的接口可以是files_list_non_auth_dirsand files_read_non_auth_files

files_list_non_auth_dirs(daemon_name_t)
files_read_non_auth_files(daemon_name_t)

推荐阅读