2013-04-25 106 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