歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 教會你Redhat Enterprise Linux關閉SELinux

教會你Redhat Enterprise Linux關閉SELinux

日期:2017/2/28 16:18:58   编辑:Linux教程

紅帽企業 Linux 4包括了一個SELinux 的實現。SELinux 代表了用戶,程序以及進程間相互交流的主要變化。在這個發行版本中,SELinux 被默認安裝並被開啟使用。

在安裝的過程中,您可以選擇禁用 SELinux,或是設置它只記錄警告信息,或是使用它的只在以下守護進程中有效的目標化策略:dhcpd、httpd、mysqld、named、 nscd、ntpd、portmap、postgres、snmpd、squid、syslogd

目標化策略在默認的情況下被啟用。

紅帽企業 Linux 4 使用在 ext2/ext3 文件系統上的擴展屬性來支持 SELinux。這就意味著,當一個文件被寫到默認掛載的 ext2/ext3 文件系統中時,一個擴展的屬性也會被寫入。

當系統有 紅帽企業 Linux 4 和 紅帽企業 Linux 2.1 雙重啟動的時候,這就可能會產生一些問題。紅帽企業 Linux2.1 內核不支持文件的擴展屬性,當它遇到文件的擴展屬性時,系統可能會崩潰。

有Linux桌面用戶在安裝了RedHat Enterprise Linux 4.0後,可能會需要關閉SELinux,正確的方法是:
修改/etc/selinux/config文件中的SELINUX="" 為 disabled ,然後重啟。
By wangzhijun, # 24. January 2006, 04:09:06

SELinux中的Apache和MySQL設定

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 命令查看文件目錄的策略類型

這樣你就成功的完成Redhat Enterprise Linux關閉SELinux了
紅帽企業 Linux 4包括了一個SELinux 的實現。SELinux 代表了用戶,程序以及進程間相互交流的主要變化。在這個發行版本中,SELinux 被默認安裝並被開啟使用。

在安裝的過程中,您可以選擇禁用 SELinux,或是設置它只記錄警告信息,或是使用它的只在以下守護進程中有效的目標化策略:dhcpd、httpd、mysqld、named、 nscd、ntpd、portmap、postgres、snmpd、squid、syslogd

目標化策略在默認的情況下被啟用。

紅帽企業 Linux 4 使用在 ext2/ext3 文件系統上的擴展屬性來支持 SELinux。這就意味著,當一個文件被寫到默認掛載的 ext2/ext3 文件系統中時,一個擴展的屬性也會被寫入。

當系統有 紅帽企業 Linux 4 和 紅帽企業 Linux 2.1 雙重啟動的時候,這就可能會產生一些問題。紅帽企業 Linux2.1 內核不支持文件的擴展屬性,當它遇到文件的擴展屬性時,系統可能會崩潰。

有Linux桌面用戶在安裝了Redhat Enterprise Linux 4.0後,可能會需要關閉SELinux,正確的方法是:
修改/etc/selinux/config文件中的SELINUX="" 為 disabled ,然後重啟。
By wangzhijun, # 24. January 2006, 04:09:06

SELinux中的Apache和MySQL設定

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 命令查看文件目錄的策略類型

這樣你就成功的完成Redhat Enterprise Linux關閉SELinux了。

Copyright © Linux教程網 All Rights Reserved