etsebool命令是用來(lái)修改SElinux策略內(nèi)各項(xiàng)規(guī)則的布爾值。setsebool命令和getsebool命令是SELinux修改和查詢布爾值的一套工具組。SELinux的策略與規(guī)則管理相關(guān)命令:seinfo命令、sesearch命令、getsebool命令、setsebool命令、semanage命令。下面讓我們?cè)敿?xì)講解一下setsebool命令的使用方法。
語(yǔ)法
setsebool [-P] 布爾值=[0|1]
選項(xiàng)
-P:直接將設(shè)置值寫(xiě)入配置文件,該設(shè)置數(shù)據(jù)將來(lái)會(huì)生效的。
實(shí)例
setsebool -P allow_ftpd_anon_write=1 #允許ftpd匿名用戶可寫(xiě)
setsebool -P ftp_home_dir 1 #允許用戶訪問(wèn)自己的根目錄
setsebool -P ftpd_is_daemon 1 #允許daemon運(yùn)行ftpd
setsebool -P ftpd_disable_trans 1 #關(guān)閉SELINUX對(duì)ftpd的保護(hù)
setsebool -P allow_httpd_anon_write=1 #允許httpd匿名用戶可寫(xiě)
setsebool -P allow_httpd_sys__anon_write=1 #同上
setsebool -P httpd_enable_cgi 1 #httpd被設(shè)置允許cgi被執(zhí)行
setsebool -P httpd_enable_homedirs 1 #允許訪問(wèn)用戶的根目錄
setsebool -P httpd_tty_comm 1 #允許httpd控制終端
setsebool -P httpd_unified 0 #httpd之間相互獨(dú)立
setsebool -P httpd_builtin_ing 0 #同httpd環(huán)境一樣運(yùn)行
setsebool -P httpd_can_network_connect_db 1 #httpd可以連接到數(shù)據(jù)庫(kù)(如連接mysql就必須設(shè)置)
setsebool -P httpd_can_network_connect 1 #httpd可以連接到網(wǎng)絡(luò)(如連接redis就必須設(shè)置)
setsebool -P httpd_read_user_content 1 #開(kāi)啟用戶文件的訪問(wèn)權(quán)限(如日志文件就必須設(shè)置)
setsebool -P httpd_suexec_disable_trans 1 #禁用suexec過(guò)度
setsebool -P httpd_disable_trans 1 #允許daemon用戶啟動(dòng)httpd
setsebool -P httpd_can_sendmail 1 #允許httpd發(fā)送email
setsebool -P named_write_master_zones 1 #允許修改dns的主zone文件
setsebool -P named_disable_trans 1 #允許daemon啟動(dòng)named
setsebool -P nfs_export_all_ro 1 #nfs只讀
setsebool -P nfs_export_all_rw 1 #nfs可讀寫(xiě)
setsebool -P use_nfs_home_dirs 1 #允許本機(jī)訪問(wèn)遠(yuǎn)程nfs的根目錄
setsebool -P allow_smbd_anon_write=1 #samba允許匿名用戶可寫(xiě)
setsebool -P samba_enable_home_dirs 1 #允許根目錄訪問(wèn)
setsebool -P use_samba_home_dirs 1 #允許本機(jī)訪問(wèn)遠(yuǎn)程samba根目錄
setsebool -P smbd_disable_trans 1 #允許daemon啟動(dòng)samba
setsebool -P allow_rsync_anon_write=1 #允許匿名用戶可寫(xiě)
setsebool -P rsync_disable_trans 1 #允許daemon啟動(dòng)rsync
其他命令
getsebool -a #列出所有模塊
getsebool -a | grep ftp #列出所有與ftp相關(guān)的模塊
selinux默認(rèn)不允許httpd訪問(wèn)“/home/用戶名”目錄(但是允許訪問(wèn)"/usr/local/用戶名"這種目錄),現(xiàn)在有兩種解決方案:
方案一:(允許用戶httpd訪問(wèn)其家目錄)
setsebool -P httpd_read_user_content 1
setsebool -P httpd_enable_homedirs 1
方案二:(使用semanage命令修改安全上下文)
semanage fcontext -a -t httpd_sys_content_t '/home/用戶名(/.*)?'
#重新加載,刷新配置
restorecon -R -v /home/用戶名
#查看安全上下文是否永久生效
semanage fcontext -l | grep /home/用戶名
#查看安全上下文是否永久生效
ls -Zd /home/用戶名
允許公共目錄共享,如ftp,samba,web都訪問(wèn)共享目錄
setsebool -P public_content_t 1
setsebool -P public_content_rw_t 1
允許httpd連接mysql:
setsebool -P httpd_can_network_connect_db 1
允許httpd連接redis:
setsebool -P httpd_can_network_connect=1
允許使用ftpd,如vsftpd就需要用到:
setsebool -P ftpd_full_access 1
setsebool -P ftp_home_dir 1 #可能會(huì)提示“Boolean ftp_home_dir is not defined”那就不用管了
允許httpd發(fā)送email:
setsebool -P httpd_can_sendmail 1
其他命令
#查看selinux狀態(tài)
sestatus
#查看getenforce狀態(tài)
getenforce
#臨時(shí)關(guān)閉selinux,設(shè)置SELinux 成為permissive模式
setenforce 0
#臨時(shí)打開(kāi)selinux,設(shè)置SELinux 成為enforcing模式
setenforce 1
#永久關(guān)閉SELinux
vi /etc/selinux/config
修改并設(shè)置SELINUX=disabled,再重啟服務(wù)器。
使用semanage管理SELinux
#使用semanage管理SELinux,安裝semanage
yum -y install semanage
如果提示:“No package semanage available.”則執(zhí)行如下命令:
yum -y provides semanage
執(zhí)行完以上命令成功后會(huì)提示:Filename : /usr/sbin/semanage
再執(zhí)行:
yum -y install policycoreutils-python
執(zhí)行以上命令成功之后就安裝好了semanage
#查看所有端口規(guī)則
semanage port -l
#查看某個(gè)端口的規(guī)則
semanage port -l | grep 6379
#查看ssh端口規(guī)則
semanage port -l | grep ssh
#給ssh放開(kāi)某個(gè)端口
semanage port -a -t ssh_port_t -p tcp 9998
#給ssh刪除某個(gè)已放開(kāi)的端口
semanage port -d -t ssh_port_t -p tcp 9998
#查看http端口規(guī)則
semanage port -l | grep http_port_t
#給httpd放開(kāi)某個(gè)端口
semanage port -a -t http_port_t -p tcp 2201
#給httpd刪除某個(gè)已放開(kāi)的端口
semanage port -d -t http_port_t -p tcp 2201
#查看redis端口規(guī)則
semanage port -l | grep redis_port_t
#redis添加端口規(guī)則
semanage port -a -t redis_port_t -p tcp 2201
semanage port -d -t redis_port_t -p tcp 2201
#給httpd添加某個(gè)目錄(如/websites)安全上下文
semanage fcontext -a -t httpd_sys_content_t "/websites(/.*)?"
#重新加載配置
restorecon -R -v /websites
#查看安全上下文是否永久生效
semanage fcontext -l | grep /websites
#查看安全上下文是否永久生效
ls -Zd /websites