【问题标题】:MySql SeLinux policy permissionsMySql SeLinux 策略权限
【发布时间】:2023-12-22 06:53:01
【问题描述】:

目前我设置了一个 apache 服务器(它正在运行一个 Intranet 站点),但我有点卡住了。当用户转到该页面时,它会运行一个 mysql 查询并使用INTO OUTFILE 从该查询生成一个管道分隔的文件。我遇到的问题是 SELinux 阻止 mysql 将文件写入我想要的目录。

我要写入的目录是

/var/www/html

这样当它生成时,用户会收到一个指向该文件的链接,以便他们可以直接从浏览器下载它。

我已尝试将目录的上下文设置为

mysqld_etc_t
mysqld_home_t
mysqld_var_t

也试过了,

var_t

但是我不确定我是否正确地执行了 var_t。

出于测试目的,我尝试将 SELinux 设置为 Permissive,并且 mysql 能够成功写入该文件夹,所以我知道阻碍我的只是 SELinux。

我不想禁用 SeLinux,也不想将 mysqld 设置为允许运行。所以我的问题变成了我必须做什么才能允许mysql访问写入该文件夹? 即使有人能指出我正确的方向,也将不胜感激。

【问题讨论】:

  • 您必须编写一个 selinux 策略,然后通过 seedit 添加该策略,或者只是为了进程安全而禁用 selinux。即它阻止一个进程访问另一个进程的内存。

标签: linux centos selinux


【解决方案1】:

解决方案并不像您期望的那么简单。允许 mysql 访问任何 httpd 的类型不是一个好主意,出于安全原因,允许 httpd 访问任何 mysqld 的类型也不是一个好主意。

同样将类型更改为是不够的,因为没有来自 httpd 的访问,或者没有来自 mysqld 的访问。

最后一点是创建一个新的 SELinux 类型并授予 httpd 和 mysqld 的访问权限,并使用该类型标记一个共享目录。你可以在 httpd 和 mysqld 之间共享该目录中的数据。

关于在SELinux中控制访问和创建自己的规则的解释在http://debian-handbook.info/browse/wheezy/sect.selinux.html

【讨论】: