[英]query rpm from apache+php with selinux
我有一個在RHEL5安裝的apache服務器中運行的php腳本。 該腳本在“ rpm -q --info軟件包名稱”上運行exec。
關鍵是它可以在許可模式下與selinux一起正常工作,但在完全啟用時則不能。 因此,我認為這是一個selinux問題。
我已經開始使用audit2allow基於我發現的被拒絕條目創建規則,但是現在審核日志中不再有被拒絕,但是在啟用selinux的情況下仍然無法運行。
在我的世界中,它似乎在查詢系統是否允許運行,並且當selinux說“如果您嘗試這樣做,我會阻止您”。 因此系統不會運行exec。 如果可以的話,我想我將獲得一個“被拒絕”的信息,我可以基於它創建一個新的selinux規則。 使用selinux時,我也不會拒絕任何東西,但是它可以工作。
因此,看來我將不得不處理這一難題,並為selinux創建自定義規則。 說完了,我做了一個:
module php_rpm 1.0;
require {
type httpd_t;
type bin_t;
type rpm_exec_t;
type rpm_var_lib_t;
class file { execute execute_no_trans getattr read execmod };
class dir { getattr search };
}
#============= httpd_t ==============
allow httpd_t rpm_exec_t:file { execute execute_no_trans getattr read execmod };
allow httpd_t rpm_var_lib_t:dir { getattr search };
不幸的是,這對我的問題沒有任何幫助,但是假設我弄亂了我的selinux規則:P
有沒有人試圖從啟用了selinux的php執行rpm並擺脫它?
我確實找到了解決方法。 也許不是最好的方法,但是還有一點。
我的audit2allow不起作用的原因是,在審計日志中未顯示所有消息。 閱讀此文件后,我將其激活以顯示所有日志: http : //docs.fedoraproject.org/en-US/Fedora/13/html/SELinux_FAQ/index.html#id3028826
一旦我在日志中收到更多被拒絕的消息,就可以弄清楚該使它起作用的方法。
最終的te文件如下所示:
module php_rpm 1.0;
require {
type selinux_config_t;
type httpd_script_exec_t;
type security_t;
type httpd_t;
type rpm_exec_t;
type rpm_var_lib_t;
class dir { search getattr };
class file { getattr read execute_no_trans execute lock };
}
#============= httpd_t ==============
allow httpd_t httpd_script_exec_t:file { read getattr execute_no_trans };
allow httpd_t rpm_exec_t:file { read getattr execute_no_trans execute };
allow httpd_t rpm_var_lib_t:dir { getattr search };
allow httpd_t rpm_var_lib_t:file { read getattr lock };
allow httpd_t security_t:dir search;
allow httpd_t security_t:file read;
allow httpd_t selinux_config_t:dir search;
allow httpd_t selinux_config_t:file { read getattr };
我感覺這里有點開着門,所以我仍然會嘗試將其縮小一些。 但是SELINUX規則不是我的主要關注,但它是次要的。
如果有人有更好的建議,也許有更具體的規定,請隨時分享!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.