• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    SELinux中的Apache和MySQL設定

    發布: 2007-5-26 11:30 | 作者: 佚名 | 來源: phpwhy | 查看: 72次 | 進入軟件測試論壇討論

    領測軟件測試網 Fedora Core 3 在安裝時默認把SELinux的選項激活了。SELinux比普通的Linux內核提供了更高的安全性,理論上說,在系統因為未知漏洞溢出的時候,普通用戶是不可能得到超級用戶的權限了。但是,就是因為SELinux安全性的提高,導致我們在使用時,會發生一些我們以前從沒遇到的問題。
    前兩天我在使用Fedora Core 3搭建PHP+MySQL的WebServer時就遇到了一些問題,F在整理一下,如果您也遇到同樣的問題,那么,看過這篇文章,就應該可以輕而易舉的解決了。
    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
    試一下吧,一定有效 

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>