SELinux
三种状态:
Disabled :关闭selinux的各项功能
Permissive:0,警告
Enforcing:1,强制
这三种状态可以直接通过两种方式查看:
a、vim /etc/sysconfig/selinux
b、getenforce
改变selinux状态的方法也是有两种:
a、 step1 : vim /etc/sysconfig/selinux
step2 : reboot
b、 setenforce 0 ##Permissive
setenforce 1 ##Enforcing
##第二种修改方式重启后,会继续按照配置文件中的来加载
ls -Z :显示文件的安全属性及名称
display security context so it fits on most displays
为了对比效果更明显,在/mnt下建立一个文件westosfile和一个目录westos,然后,直接移到/var/ftp/pub
再次查看安全上下文如下图:
yum install lftp -y ##通过lftp的默认发布目录来查看
可以很清楚的看到westos目录是没有影响的,但是,westosfile文件是不能够显示的
如果要修改的话,修改安全上下文的规则如下:
1)临时修改(chcon:change context)
chcon -t :set type in the target security context
chcon -t public_content_t westosfile ##不能修改系统文件(rw 读写)
2)永久修改
semanage fcontext可用于显示或修改:
使用扩展正则表达式来指定路径和文件名。
fcontext规则中最常用的扩展正则表达式是(/.*)?,表示随意地匹配/后跟任何数量的字符,递归地与表达式前面列出的目录以及该目录中的所有内容相匹配
eg.semanage fcontext -l | grep /westos
semanage fcontext -a -t public_content_t '/var/ftp/pub/westos(/.*)?'
restorecon -RvvF /var/ftp/pub/westos ##必须执行刷新
restorecon:用来恢复文件的安全上下文
选项:
-i:忽略不存在的文件
-f:infilename文件 infilename中记录要处理的文件
-e:directory排除目录
-R/r:递归处理目录
-n:不改变文件标签
-o/outfilename:保存文件列表时到outfilename,在文件不正确的情况下
-v:将过程显示到屏幕上
-F:强制恢复文件安全语境
getsebool:权限是否开放的清单
getsebool -a ##列出目前系统上面所有布尔值条款设置为开启或关闭值的信息
setsebool -P xxx on|off ##直接将设置值写入配置文件,该设置数据将来会生效
以ftp_home_dir 为例,查看的结果是off,表示关闭了ftp本地用户的权限
如果在排错时出现了问题,解决问题最好的办法就是查看日志:
1)vim /var/log/messages
##查看详细信息,采集日志,并且可以分析(有软件要安装,此软件名为:setroubleshoot)
2)vim /var/log/audit/audit.log
##只提供错误
管理SELinux端口标签
SELinux中对于特定服务有内定的一些端口,如果我们自己随便修改配置文件可能会导致服务起不来,对此,我们要将端口添加进去~
查看:semanage port -l | grep xxx
添加:semanage port -a -t xxx -p tcp xxx
当然,也可以直接关闭SELinux的功能(Disabled | permissive)
我们的实验以http为例:
vim /etc/httpd/conf/httpd.conf ##将Listen改为:666
systemctl restart httpd
##重启是失败的,因为端口不在SELinux允许的范围内
semanage port -a -t http_port_t -p tcp 666 ##添加
再次重启即可成功~