禁用 httpd 的 SELinux 文件读保护

禁用 httpd 的 SELinux 文件读保护

我正在使用 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。请先在非关键机器上测试!我盲写,自己还没有测试过!

相关内容