selinux作用:
1.限制程序访问,程序访问文件必须有匹配的上下文
2.限制程序功能,把程序不安全功能屏蔽
getenforce ##查看状态
selinux的状态有三种:
enforcing ##强制
permissive ##警告
disabled ##关闭
更改selinux状态需要更改linux配置文件:
vim /etc/sysconfig/selinux
SELINUX=xxx
reboot
注意:selinux的开启和关闭需要reboot重启,加载配置
注意:更改selinux状态时强制状态和警告状态可以使用命令相互切换,不需要重启:
setenforce 1 ##将selinux状态更改为强制
setenforce 0 ##将selinux状态更改为警告
ls -Z ##查看文件安全上下文
ls -Zd ##查看目录的安全上下文
ps auxZ | grep vsftpd ##查看ftp服务安全上下文
chcon -t 安全上下文 file ##临时更改文件的安全上下文
chcon -t 安全上下文 dir -R ##临时更改递归目录的安全上下文
注意:重启selinux(关闭,reboot,开启,reboot)后安全上下文会恢复默认设置
mkdir /westos
touch /westos/file{1..3}
ls -Zd /westos ##查看/westos/目录本身的安全上下文
ls -Zd /westos/* ##查看/westos/目录中文件的安全上下文
semanage fcontext -a -t public_content_t '/westos(/.*)?' ##在内核安全上下文列表中将/westos/目录及目录中所有文件的安全上下文更改为public_content_t
semanage fcontext -l | grep westos ##仅查看与westos有关的安全上下文
restorecon -FvvR /westos/ ##刷新/westos/目录的安全上下文,F指向,vv过程,R递归
semanage fcontext -d '/westos(/.*)?' ##删除内核上的安全上下文列表中的/westos
getsebool -a | grep ftp ##查看关于ftp的所有sebool值
setsebool -P ftp_home_dir on ##打开sebool值中ftp_home_dir功能的开关
setsebool -P ftp_home_dir off ##关闭sebool值中ftp_home_dir功能的开关
注意:ftp服务中,将ftpd_full_access(相当于总开关) 打开后,relinux将不再限制ftp功能
yum install vsftpd -y
systemctl start vsftpd
systemctl enable vsftpd
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload
vim /etc/vsftpd/vsftpd.conf
anon_upload_enable=YES
anon_world_readable_only=NO
chgrp ftp /var/ftp/pub
chmod 775 /var/ftp/pub
getsebool -a|grep ftp
setsebool -P ftpd_anon_write on
chcon -t public_content_rw_t /var/ftp/pub/
systemctl restart vsftpd
注意:此方法为临时更改,重启selinux后会失效,若要永久改变,可采用下文日志中插件提供的解决方法
查看日志报错,可以发现插件会给我们提供解决错误的建议:
##永久更改安全上下文
##刷新使更改立即生效
注意:日志中的建议只提供更改方法,不注重安全性
所有的报错信息在/var/log/audit/audit.log里,但是只会报错,不会告诉你怎么解决
cat /var/log/audit/audit.log