Selinux是一种基于内核的安全保护机制,在linux系统种默认自带,但在实际生产环境中一般为宽松模式(permissive)或彻底关闭状态(disabled)。本文旨在系统服务启动异常时,作为一个排错思路。
1、设置selinux状态
# 查询selinux状态
getenforce
# 临时设置selinux状态( 1 开启;0 临时关闭,宽松模式 )
setenforce 1
setenforce 0
# 修改配置文件,永久修改selinux状态
vim /etc/selinux/config
SELINUX=enforcing(开启)、permissive(临时关闭,宽松模式)、disabled(彻底关闭)
2、使用semanage管理selinux
# 使用yum provides命令查询semanage命令所属的软件包
yum provides semanage
得到软件包名:policycoreutils-python
# 安装semanage与排错包setroubleshoot-server
yum -y install semanage
yum -y install setroubleshoot-server
# semanage管理selinux
(1) 查看selinux放行的端口
semanage port -l
(2) 添加/删除放行的端口
semanage port -a -t http_port_t -p tcp 82
-a 添加
-d 删除
-t 指定服务类型
-p 定于协议和添加的端口
3、实例验证(httpd服务启动报错)
# 安装httpd服务
yum -y install httpd
# 修改配置文件监听82端口(在Listen 80的下方新增一行)
vim /etc/httpd/conf/httpd.conf
Listen 82
# 启动服务(报错,error)
systemctl start httpd
# 查看message日志
grep 'setroubleshoot' /var/log/messages
# 可以通过指引查看详细报错信息(由上面的命令得出)
sealert -l 74850b7d-8664-47ed-b008-bf91d75dc4d5
# 查看报错发现是selinux拦截导致,添加放行82端口,重新启动服务成功
semanage port -a -t http_port_t -p tcp 82
systemctl start httpd