我正在使用 RHEL 6.1,我想配置 SELinux 来授权 httpd 读取某些文件夹中的所有文件(我的目标是使日志文件可通过 Web 访问获得)。
- 如果不明确列出所有文件,这可能吗?
- 如果不禁用 httpd 的 SELinux,这可能吗?
我需要能够持久的解决方案。
提前致谢。
答案1
您可以设置一条规则来允许httpd_t
读取日志文件所标记的文件类型。
例如,如果我希望httpd_t
能够读取your_log_file_type_t
,您可以创建一个这样的策略模块(从我的脑海中想出来的)。将其命名为 apache_read_logs.te 并将其放在一个空目录中:
policy_module(apache_read_logs, 1.0)
type httpd_t;
type your_log_file_type_t;
type your_log_dir_type_t;
allow httpd_t your_log_dir_type_t:dir list_dir_perms;
read_files_pattern(httpd_t, your_log_dir_type, your_log_file_type)
read_lnk_files_pattern(httpd_t, your_log_dir_type, your_log_file_type)
这允许httpd_t
读取标记为 的文件your_log_file_type_t
并搜索标记为 的目录your_log_dir_type_t
。它使用宏来简化操作。您可以通过下载并检查来查看宏的外观参考策略 tarball。
然后,从创建该文件的目录中,以 root 身份运行:
# make -f /usr/share/selinux/devel/Makefile
# /usr/sbin/semodule -i apache_read_logs.pp
这假设您已安装 selinux-policy-devel 和 policycoreutils。请先在非关键机器上测试!我盲写,自己还没有测试过!