1

目前,我设置了一个 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访问写入该文件夹?即使有人能指出我正确的方向,也将不胜感激。

4

1 回答 1

1

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

将类型更改为也不够,因为没有来自 httpd 的访问权限,或者没有来自 mysqld 的访问权限。

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

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

于 2013-06-16T12:11:20.617 回答