目前我已经设置了一个apache服务器(它正在运行一个内部网站点),我有点卡住了。当用户转到页面时,它运行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访问写入该文件夹? 即使有人能指出我正确的方向,也会非常感激。
答案 0 :(得分:1)
解决方案并不像您期望的那么容易。允许mysql访问httpd的任何类型并不是一个好主意,并且出于安全原因允许httpd访问任何mysqld的类型也不是一个好主意。
同样将类型更改为不足,因为httpd无法访问,否则mysqld无法访问。
最后一点是创建一个新的SELinux类型并为httpd和mysqld授予访问权限并标记该类型的共享目录。您可以在httpd和mysqld之间的目录中共享数据。
有关控制SELinux访问权限和创建自己规则的说明,请参阅http://debian-handbook.info/browse/wheezy/sect.selinux.html