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通過對比程序和目標資源的安全上下文來決定是否可以成功訪問。
?
轉載于:https://www.cnblogs.com/zh1164/p/6340776.html
總結
- 上一篇: Linux上使用shell脚本查看内存情
- 下一篇: 关于微信小程序的尺寸关系