SElinux 策略授予 httpd 对 /etc/my.cnf 的读取权限

SElinux 策略授予 httpd 对 /etc/my.cnf 的读取权限

我如何修改SElinux策略以允许 httpd 读取/etc/my.cnf

背景:我的 Web 应用程序连接到 mysql 数据库。凭据不是硬编码在代码中,而是存储在 mysql 组中/etc/my.cnf

[my_client]
protocol = TCP
user = john
password = mypasswd
database = my_db_name

my_client在 Web 应用程序中,我可以在连接到数据库时简单地引用。这在 Debian/Ubuntu 中运行良好,但在 Fedora 中失败。问题是 SElinux 阻止httpd读取/etc/my.cnf,因此无法解析my_client。当我禁用 SElinux 时,问题就消失了。

答案1

这是执行此操作的策略,您需要执行以下操作来安装它;

  1. 创建一个名为“policy”的目录。
  2. 在该目录中创建一个名为httpd_mysql

将以下数据插入到文件中

policy_module(http_mysql, 1.0.0)
require {
    type httpd_t;
}
mysql_read_config(httpd_t)

现在运行make -f /usr/share/selinux/devel/Makefile load以添加策略。

相关内容