会给每一个文件都加载一个标签,每一个程序也会有安全上下文,程序需要和文件相匹配,才能被读取,如果不匹配,在读取这个文件时,会被seliux拒绝。它管的是这个程序可以查看什么文件。
给程序功能加个开关sebool,sebool值决定程序功能的状态,ftp默认是允许本地用户上传,但是selinux会将这些不安全的功能默认关闭。
rm -fr /etc/vsftpd/vsftpd.conf
yum reinstall vsftpd -y ---重新安装vsftpd软件
chmod 700 /home/student/ ---将/home/student/目录权限还原
systemctl start vsftpd
systemctl enable vsftpd
systemctl start firewalld
firewall-cmd --permanent --add-service=ftp ---永久添加ftp服务,需要火墙开启状态
firewall-cmd --reload ---重新加载火墙服务,但凡在火墙中永久添加服务的,但需要reload操作
yum install lftp ---安装lftp软件,方便后续实验
(但是这是暂时性的,更改完后连续更改getenforce的值重启,安全上下文会变回去)
SELINUX=disabled ---将状态修改为disabled
SELINUX=enforcing ---将状态修改为enforcing
综上所述:chcon命令可以也只能临时更改安全上下文
1.先把用户家目录修改一行删除
2.把匿名用户上传权限打开
3.修改匿名用户家目录的拥有组及权限
首先getsebool -a | grep ftp ---查看ftp的程序开关
setsebool -P ftpd_anon_write on ---打开ftp的程序开关,-P表示永久
setenforce 0 ---切换到警告状态
lftp 172.25.254.162 ---匿名连接172.25.254.162
cd pub
quit
可以上传文件/etc/passwd(如果已经存在,上传其他文件)
setenforce 1 ---切换到强制状态
lftp 172.25.254.162
cd pub
此时不能上传文件
quit
getsebool -a | grep ftp ---查看ftp的程序开关
ls -Zd /var/ftp/pub/ ---查看ftp匿名登陆家目录的安全上下文
getenforce ---查看内核级火墙状态
chcon -t public_content_rw_t /var/ftp/pub/ ---临时添加安全上下文中的读写权限
ls -Zd /var/ftp/pub/ ---再次查看ftp匿名登陆家目录的安全上下文,读写权限添加成功
此时能够上传文件
/var/log/sudit/audit.log 这个文件记录了所有selinux的报错信息,但是不提供解决方案
/var/log/messages日志文件中会提供解决方案,但是不一定会记录报错信息
> /var/log/audit/audit.log ---清空
> /var/log/messages ---清空日志文件
在selinux强制状态下
touch /mnt/file
mv /mnt/file /var/ftp/
lftp 172.25.254.162
ls
查看不到文件file
cat /var/log/sudit/audit.log ---可以查看到报错信息,但是没有解决方案
cat /var/log/messages ---可以查看到解决方案
yum remove setroubleshoot-server.x86_64 -y ---卸载提供日志文件中解决方案的软件
lftp 172.25.254.162
ls
查看不到文件file
cat /var/log/sudit/audit.log ---可以查看到报错信息,但是没有解决方案
cat /var/log/messages ---此时没有信息