亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網絡,我們將竭誠為您提供優質的服務! 誠征網絡推廣 | 網站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯系我們 [ 會員登錄/注冊 ]
促銷推廣
客服中心
業務咨詢
有事點擊這里…  531199185
有事點擊這里…  61352289
點擊這里給我發消息  81721488
有事點擊這里…  376585780
有事點擊這里…  872642803
有事點擊這里…  459248018
有事點擊這里…  61352288
有事點擊這里…  380791050
技術支持
有事點擊這里…  714236853
有事點擊這里…  719304487
有事點擊這里…  1208894568
有事點擊這里…  61352289
在線客服
有事點擊這里…  531199185
有事點擊這里…  61352288
有事點擊這里…  983054746
有事點擊這里…  893984210
當前位置:首頁 >> 技術文章 >> 文章瀏覽
技術文章

SELinux中的Apache和MySQL設定

添加時間:2011-2-23  添加: admin 

Fedora Core 3 在安裝時默認把SELinux的選項激活了。SELinux比普通的Linux內核提供了更高的安全性,理論上說,在系統因為未知漏洞溢出的時候,普通用戶是不可能得到超級用戶的權限了。但是,就是因為SELinux安全性的提高,導致我們在使用時,會發生一些我們以前從沒遇到的問題。

前兩天我在使用Fedora Core 3搭建PHP+MySQL的WebServer時就遇到了一些問題。現在整理一下,如果您也遇到同樣的問題,那么,看過這篇文章,就應該可以輕而易舉的解決了。

1. Apache - Document root must be a directory 問題。

有可能和這個問題并發的問題還有 403 Forbidden 禁止訪問的問題。

現象描述:

不使用系統默認的 /var/www/html作為系統的Document Root,自己新建一個目錄后修改 /etc/httpd/conf/httpd.conf 中的配置,然后重起Apache的Daemon,發現Apache無法起動,系統報錯:

  Document root must be a directory

但是,我們設置的DocumentRoot 的確是一個目錄,而且apache用戶具有可讀權限。

另一種情況:新建一個虛擬目錄或文件后,無法訪問,顯示 Forbidden, 403 Error,但文件或目錄有可讀權限。

問題產生的原因:

一開始我想來想去想不出為什么,但是給我感覺是權限的問題,用傳統的Linux的思維方式來看,權限絕對沒有問題。但是仔細一想,SELinux是不是會有其他安全的設定?

檢查 avc message,查看 /var/log/messages文件,發現有類似以下內容的這樣一段:

Dec 24 17:54:59 hostname kernel: audit(1098222899.827:0): avc: \

denied { getattr } for pid=19029 exe=/usr/sbin/httpd \

path=/var/www/html/about.html dev=dm-0 ino=373900 \

scontext=root:system_r:httpd_t tcontext=user_ubject_r:user_home_t \

tclass=file

嘿嘿,問題找到了,果然是SELinux的新特性搞的鬼。我把目錄或文件設成了user_home_t類型,因此apache的進程沒有權限,無法訪問。針對Apache的進程所使用的SELinux target policy規定了apache的進程只能訪問httpd_sys_content_t類型的目錄或文件。

解決辦法:

很簡單,把目錄或文件的策略類型改成 httpd_sys_content_t 就可以了

使用root用戶

# chcon -t httpd_sys_content_t 目錄名或文件名

然后可以用 ls -laZ 命令查看文件目錄的策略類型


2. Mysql - Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13)

剛搞定Apache,mySQL又出問題了。

問題現象:

本機用mysql命令可以正常登錄數據庫并正常操作。但是在php寫的頁面中,不管如何,連接mySQL數據庫時,都會報如下錯誤:

Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13)

問題原因:

查看mysql.sock文件,存在并且任何人都可讀可寫。發現avc message (/var/log/messages)中同樣有策略錯誤的記錄。

用 ps -efZ|grep mysql 命令檢查mysql的進程,發現mySQL使用了unconfined_t 這個未定義策略類型在運行,而mysql.sock以及mysqld文件的策略類型都是var_lib_t。很明顯,這應該是個Fedora Core 3 的 BUG,SELinux target policy的BUG,redhat并沒有為mySQL制定正確的target policy。

解決辦法:

到redhat的bugzilla系統上搜索,果然找到了這個BUG。

 Bug #:  138421 

https://bugzilla.redhat.com/bugzill...g.cgi?id=138421

在這個頁面找到新的target policy的補丁安裝即可

補丁下載頁面:

ftp://people.redhat.com/dwalsh/SELinux/FC3

你也可以從本文的附件中下載

只要下載

selinux-policy-targeted-1.17.30-2.23以上的版本就能正常使用mySQL了。

如果你原來的系統安裝了 selinux-policy-targeted-source (源代碼),那么你也必需下載source的rpm文件,并首先升級這個包,因為兩個包有依賴關系。

補丁安裝辦法:

使用root用戶。

先升級新的target-policy-source (如果你之前安裝了這個包的話)

# rpm -Uvh selinux-policy-targeted-sources-1.17.30-2.61.noarch.rpm

升級新的target-policy

# rpm -Uvh selinux-policy-targeted-1.17.30-2.61.noarch.rpm

更新mysql相關的target policy

# rpm -q -l mysql-server | restorecon -R -v -f -

# rpm -q -l mysql | restorecon -R -v -f -

重起mysql的服務

# service mysqld restart

關鍵字:數據庫、Apache、MySQL、 

 

分享到:

頂部 】 【 關閉
版權所有:佛山思海電腦網絡有限公司 ©1998-2024 All Rights Reserved.
聯系電話:(0757)22630313、22633833
中華人民共和國增值電信業務經營許可證: 粵B1.B2-20030321 備案號:粵B2-20030321-1
網站公安備案編號:44060602000007 交互式欄目專項備案編號:200303DD003  
察察 工商 網安 舉報有獎  警警  手機打開網站