2013-04-25 89 views
1

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

,我试图写的目录或者是

/var/www/html 

,这样,当它产生的用户将收到一个链接到文件,使他们能够从他们的浏览器直接下载。

我已经试过了目录的情况下设置为

mysqld_etc_t 
mysqld_home_t 
mysqld_var_t 

也试过,

var_t 

但是我不知道我做了正确var_t。

我已经尝试将SELinux设置为Permissive用于测试目的,而且mysql能够成功写入文件夹,所以我知道所有以我的方式站在SELinux中的是SELinux。

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

+0

你必须写一个SELinux策略,然后通过seedit的添加策略,或只是禁止其用于处理安全只有SELinux的。即它阻止一个进程访问其他进程的内存。 – bikram990 2013-04-26 09:55:24

回答

1

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

由于没有来自httpd的访问或者没有来自mysqld的访问,所以将类型更改为不足也是不够的。

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

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