我如何修改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
这是执行此操作的策略,您需要执行以下操作来安装它;
- 创建一个名为“policy”的目录。
- 在该目录中创建一个名为
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
以添加策略。