SELinux的策略與規則管理相關命令:seinfo命令、sesearch命令、getsebool命令、setsebool命令、semanage命令。html
seinfo 命令linux
seinfo命令是用來查詢SELinux的策略提供多少相關規則,一個主體進程可否讀取到目標文件資源的重點是在於SELinux的策略以及策略內的各項規則,而後再經過該規則的定義去處理各項目標文件的安全上下文,尤爲是「類型」部分。正則表達式
-A:列出SELinux的狀態、規則布爾值、身份識別、角色、類型等全部信息。 安全
-t:列出SELinux全部類型(type)的種類。 服務器
-r:列出SELinux全部角色(role)的種類。 ide
-u:列出SELinux全部身份識別(user)的種類。 工具
-b:列出全部規則的種類(布爾值)。
實例 spa
列出與httpd有關的規則:rest
seinfo -b | grep httpdorm
sesearch命令
若是查到的相關類型或者布爾值,想要知道詳細規則時,使用sesearch命令查詢。
語法
sesearch [-a] [-s 主體類型] [-t 目標類型] [-b 布爾值]
選項
-a:列出該類型或布爾值的全部相關信息
-t:後面還要接類型,例如 -t httpd_t
-b:後面還要接布爾值的規則
實例
-b httpd_enable_ftp_server 實例
找出目標文件資源類型爲httpd_sys_content_t的有關信息:
sesearch -a -t httpd_sys_content_t
找出主體進程爲httpd_t且目標文件類型爲httpd相關的全部信息:
sesearch -s httpd_t -t httpd_* -a
查看布爾值httpd_enable_homedirs設置了多少規則
sesearch -b httpd_enable_homedirs -a
getsebool命令
是用來查詢SElinux策略內各項規則的布爾值。
語法
getsebool [-a] [布爾值條款]
選項
-a:列出目前系統上面的全部布爾值條款設置爲開啓或關閉值。
實例
查詢本系統內全部的布爾值設置情況:
getsebool -a
NetworkManager_disable_trans -->
off allow_console_login -->
setsebool命令
setsebool命令是用來修改SElinux策略內各項規則的布爾值。setsebool命令和getsebool命令是SELinux修改和查詢布爾值的一套工具組。
語法
setsebool [-P] 布爾值=[0|1]
選項
-P:直接將設置值寫入配置文件,該設置數據未來會生效的。
實例
容許vsvtp匿名用戶寫入權限:
setsebool -P allow_ftpd_anon_write=1
若是你但願你的ftp用戶能夠訪問本身的家目錄的話,須要開啓:
setsebool -P ftp_home_dir 1
若是你但願將vsftpd以daemon的方式運行的話,須要開啓:
setsebool -P ftpd_is_daemon 1
你可讓SElinux中止保護vsftpd的daemon方式動行:
setsebool -P ftpd_disable_trans 1
HTTP被設置容許cgi的設置:
setsebool -P httpd_enable_cgi 1
容許用戶HHTP訪問其家目錄,該設定限僅於用戶的家目錄主頁:
setsebool -P httpd_enable_homedirs 1
chcon -R -t httpd_sys_content_t ~user/public_html
容許httpd訪問終端:
setsebool -P httpd_tty_comm 1
關閉Selinux的關於httpd進程守護的保護:
setsebool -P httpd_disable_trans 1
service httpd restart
關於named、master更新selinux設定:
setsebool -P named_write_master_zones 1
關閉named的進程守護保護:
setsebool -P named_disable_trans 1
service named restart
Selinux將本機的NFS共享設置成只讀:
setsebool -P nfs_export_all_ro 1
SElinux將本機的NFS共享設置成可讀可寫:
setsebool -P nfs_export_all_rw 1
若是你想要將遠程NFS的家目錄共享到本機,須要開啓:
setsebool -P use_nfs_home_dirs 1
若是samba服務器共享目錄給多個域,則須要:
setsebool -P allow_smbd_anon_write=1
samba服務器要共享家目錄時:
setsebool -P samba_enable_home_dirs 1
若是你需在本機上使用遠程samba服務器的家目錄:
setsebool -P use_samba_home_dirs 1
關閉selinux關於samba的進程守護的保護:
setsebool -P smbd_disable_trans 1
service smb restart
容許rsync其餘用戶寫入時:
setsebool -P allow_rsync_anon_write=1
中止rsync的進程保護
setsebool -P rsync_disable_trans 1
容許系統使用kerberos:
setsebool -P allow_kerberos 1
系統工做在nis環境時:
setsebool -P allow_ypbind 1
semanage命令
semanage命令是用來查詢與修改SELinux默認目錄的安全上下文。
語法
semanage {login|user|port|interface|fcontext|translation} -l
semanage fcontext -{a|d|m} [-frst] file_spec
選項
-l:查詢。
fcontext:主要用在安全上下文方面。
-a:增長,你能夠增長一些目錄的默認安全上下文類型設置。
-m:修改。
-d:刪除。
實例
查詢一下/var/www/html的默認安全性本文的設置:
semanage fcontext -l SELinux fcontext type Context
....(前面省略)....
/var/www(/.*)? all files system_u:object_r:httpd_sys_content_t:s0
....(後面省略)....
如上面例子所示,咱們能夠查詢的到每一個目錄的安全性本文!而目錄的設定可使用正則表達式去指定一個範圍。那麼若是咱們想要增長某些自定義目錄的安全性本文呢?舉例來講,我想要色設置/srv/samba成爲 public_content_t的類型時,應該如何設置呢?
用semanage命令設置/srv/samba目錄的默認安全性本文爲public_content_t:
mkdir /srv/samba
ll -Zd /srv/samba
drwxr-xr-x root root root:object_r:var_t /srv/samba
如上所示,默認的狀況應該是var_t這個咚咚的!
semanage fcontext -l | grep '/srv' /srv/.* all files system_u:object_r:var_t:s0
/srv/([^/]*/)?ftp(/.*)? all files system_u:object_r:public_content_t:s0
/srv/([^/]*/)?www(/.*)? all files system_u:object_r:httpd_sys_content_t:s0
/srv/([^/]*/)?rsync(/.*)? all files system_u:object_r:public_content_t:s0
/srv/gallery2(/.*)? all files system_u:object_r:httpd_sys_content_t:s0
/srv directory system_u:object_r:var_t:s0 //看這裏!
上面則是默認的/srv底下的安全性本文資料,不過,並無指定到/srv/samba。
semanage fcontext -a -t public_content_t "/srv/samba(/.*)?"
semanage fcontext -l | grep '/srv/samba' /srv/samba(/.*)? all files system_u:object_r:public_content_t:s0
cat /etc/selinux/targeted/contexts/files/file_contexts.local
# This file is auto-generated by libsemanage
# Please use the semanage command to make changes
/srv/samba(/.*)? system_u:object_r:public_content_t:s0 #寫入這個檔案
restorecon -Rv /srv/samba* #嘗試恢復默認值
ll -Zd /srv/samba
drwxr-xr-x root root system_u:object_r:public_content_t /srv/samba/ #有默認值,之後用restorecon命令來修改比較簡單!
semanage命令的功能不少,這裏主要用到的僅有fcontext這個選項的用法而已。如上所示,你可使用semanage來查詢全部的目錄默認值,也可以使用它來增長默認值的設置!