認識selinux

今天遇到一個訪問ftp失敗的問題, 場景大致是: 在/var/ftp下面新建一個目錄/pxeboot ,然後將其掛載到一個iso上,結果ftp無法訪問。

最後定位到是selinux 的問題。 之前對selinux只知道怎麼開關,沒什麼理解,現在就學習一下吧。

 

基本概念

seLinux的目的是對程序讀取文件進行權限的控制,即便你chmod 777,如果不符合seLinux的規則,那麼程序同樣無法訪問目標文件。

selinux控制訪問的規則定義在策略中,程序和目標資源都有各自的安全上下文(security context),只有雙方的安全上下文符合策略中的規定時才能夠成功訪問。

 

seLinux安全上下文  由冒號分隔的四個字段組成,其中最重要的是第三個, 稱爲 類型字段 。

下面圖例說明了httpd是怎麼讀取到/var/www/html目錄中的文件的。

 

實踐:

修改seLinux規則需要用到的主要命令有 chcon restorecon setsebool。

關於chcon更詳細的用法:

 

chcon 的作用是更改相應的安全上下文,其實在seLinux規則中可以定義目錄文件的默認安全上下文,我們可以通過restorecon來恢復默認設置。上例中,我們只需要 執行 restorecon -Rv  /var/www/html  就可以還原 /var/www/html 目錄的默認設置,從而使httpd可以訪問a.html。

關於restorecon的詳細用法:

 

既然我們說了restorecon可以恢復默認設置,那麼默認設置定義在哪裏拿?在目錄/etc/selinux/targeted/contexts中定義着這些默認設置。我們可以使用semanage方便管理他們。

 

我們現在知道了如果seLinux的規則不允許的話,程序就無法訪問到目標文件,而這些規則是通過一個個 規則布爾值 來表示的,我們可以通過更改這些規則布爾值來放開部分限制。

我們下面就通過這種方式來解決在開頭提到的那個問題。

 

如果程序因爲seLinux的原因導致了訪問目標資源失敗,往往會在下面兩個日誌中有所體現。

/var/log/messages /var/log/audit/audit.log 

按照相應提示定位修改即可。

 

總結: seLinux的初步認識就是這樣了,我的最直白的理解就是seLinux通過對比程序和目標資源的安全上下文來決定是否可以成功訪問

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章