selinux詳解
selinux 的全稱是Security Enhance Linux,就是安全加強的Linux。在Selinux之前root賬號能夠任意的訪問所有文檔和服務 ;
如果某個文件設為777,那么任何用戶都可以訪問甚至刪除。 這種方式稱為DAC(主動訪問機制),很不安全。
DAC自主訪問控制: 用戶根據自己的文件權限來決定對文件的操作,也就是依據文件的own,group,other/r,w,x 權限進行限制。Root有最高權限無法限制。r,w,x權限划分太粗糙。無法針對不同的進程實現限制。
Selinux則是基於MAC(強制訪問機制),簡單的說,就是程序和訪問對象上都有一個安全標簽(即selinux上下文)進行區分,只有對應的標簽才能允許訪問,否則即使權限是777,也是不能訪問的。
在selinux中,訪問控制屬性叫做安全上下文,所有客體(文件、進程間通訊通道、套接字、網絡主機等)和主體(進程)都有與其關聯的安全上下文,一個安全上下文由三部分組成:用戶(u)、角色(r)、和類型(t)標識符。但我們最關注的是第三部分
當程序訪問資源時 ,主體程序必須要通過selinux策略內的規則放行后,就可以與目標資源進行安全上下文的比對,若比對失敗則無法存取目標,若比對成功則可以開始存取目標,最終能否存取目標還要與文件系統的rwx權限的設定有關,所以啟用了selinux后出現權限不符的情況時,你就得一步一步分析可能出現的問題了。
1.selinux狀態查看與配置:
selinux的配置文件位置:/etc/selinux/config,它還有個鏈接在/etc/sysconfig/selinux.
使用config文件來配置selinux(通過配置文件修改selinux的狀態屬於永久修改,要重啟系統才生效)
[root@localhost ~]# ls /etc/sysconfig/selinux -l lrwxrwxrwx. 1 root root 17 Jan 10 19:48 /etc/sysconfig/selinux -> ../selinux/config
(1)配置文件
[root@make_blog ~]# cat /etc/sysconfig/selinux # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled # SELINUXTYPE= can take one of three two values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected. # mls - Multi Level Security protection. SELINUXTYPE=targeted
selinux=enforcing
#此項定義selinux狀態
#enforcing-是強制模式系統,它受selinux保護。就是違反了策略你就無法繼續操作下去。
#permissive-是提示模式系統不會受到selinux保護,只是收到警告信息。permissive就是selinux有效,但是即使你違反了策略的話它讓你繼續操作,但是把你違反的內容記錄下來(警告信息)
#disabled-禁用selinux
selinuxtype=targeted
#此項定義selinux使用哪個策略模塊保護系統。targeted只對Apache,sendmail,bind,postgresql,nfs,cifs等網絡服務保護。
以上策略配置都放置在/etc/selinux目錄中,目錄和策略名稱相同。
使用selinux相關命令查看和修改狀態:(屬於立即生效但臨時性的)
(2)查看工作狀態
getenforce查看selinux狀態
[root@make_blog ~]# getenforce Disabled
setenforce設定selinux運行狀態,1開啟(Enforce),0關閉(Permissive)
[root@localhost datas]# setenforce usage: setenforce [ Enforcing | Permissive | 1 | 0 ] [root@localhost ~]# setenforce 0 [root@localhost ~]# getenforce Permissive [root@localhost ~]# setenforce 1 [root@localhost ~]# getenforce Enforcing
相關鏈接:https://blog.csdn.net/kangshuo2471781030/article/details/79294506