文件影响:CONTEXT 安全上下文 必须匹配才能访问
服务影响:getsebool功能开关
先将/etc/sysconfig/relinux文件下的disable改为enforcing,然后reboot重启
setenforce 0 == 将/etc/sysconfig/relinux文件下的enforcing改为permissive,且不需要重启 警告
setenforce 1 == 将/etc/sysconfig/relinux文件下的permissive改为enforcing,且不需要重启 强制
测试:
先在mnt下创建文件westosfile2,然后mv /mnt/westosfile2 /var/ftp
然后lftp 172.25.75.230 --> ls 如果是强制状态就看不见westosfile2,有警告,cat /var/log/messages
如果是警告状态就可以看见westosfile2,有警告,cat /var/log/messages
更改用户家目录 anon_root=/home/ftphome (在/etc/vsftpd/vsftpd.conf下更改)
临时更改文件上下文:chcon -t public_content_t /ftphome/ -R -R表示递归更改上下文
查看文件上下文:ls -Zd /ftphome
由上图可以看到,/ftphome的上下文由default_t改为了public_content_t
但是如果selinux文件下,从enforce到disable再到enforce,刚才已经更改的文件的上下文就会复原
由enforcing改为disabled:
由disabled改为enforcing:
/ftphome的上下文复原了:
永久更改文件上下文:
1.semanage fcontext -a -t public_content_t '/ftphome(/.*)?' (/.*)?表示ftphome目录下的所有内容
2.读取: restorecon -RvvF /ftphome/
3.semanage fcontext -l | grep /var/ftp 查看列表
匿名用户enforce下,上传文件:
不要忘记更改家目录,配置文件使匿名用户可以上传(进入/etc/vsftp/vsftp.conf,将anon_upload_enable=YES前面的#去掉 )。
1.setsebool -P ftpd_anon_write on 开启上传服务,-P表示永久生效
2.getsebool -a | grep ftp 查看服务开启列表
3.chcon -t public_content_rw_t /var/ftp/pub/ 使文件可读可写
4.ls -Zd /var/ftp/pub 查看上下文
测试: 首先,先进入ftp的配置文件配置匿名用户可以上传,否则即使开启了改对了文件的上下文,也无法上传文件,会出现550报错(550:服务本身功能未开启)。
开启上传服务,getseboll -a是查看所有服务开启列表,在这里仅看ftp的所有服务列表,因为我们只需要查看它是否已经开启了允许上传文件的服务。
查看pub目录的上下文,发现此目录没有打开读写功能。
打开pub读写功能,如果不打开读写,那么就无法在selinux为enforcing时上传文件
更改配置文件后一定记得要重启服务
当ftp服务器出现报错后,会在/var/log/audit/audit.log日志里生成报错原因,但没有解决办法
如果安装了setroubleshoot-server.x86_64软件,就会把/var/log/audit/audit.log日志读取,生成解决办法,这个解决办法的文件就是/var/log/messages
测试:1.在mnt下创建一个文件然后移动到ftp
touch/mnt/file
mv /mnt/file /var/ftp
2.为了方便查看效果,我们不妨先清空以上两个日志里的内容
>/var/log/audit/audit.log
>/var/log/messages
3.lftp..........
lftp 172.25.254.116
ls 就会出来报错,此时查看日志
4.查看日志
cat /var/log/audit/audit.log 报错原因
cat /var/log/messages 解决办法
如果卸载setroubleshoot-server.x86_64软件,就不会生成解决办法,只生成原因。
测试:1.卸载软件
yum remove setroubleshoot-server.x86_64
2.为了方便查看效果,我们再次清空以上两个日志里的内容
>/var/log/audit/audit.log
>/var/log/messages
3.lftp登陆,然后查看解决方案的日志
lftp ..... --> ls 就会出来报错,此时查看日志
cat /var/log/audit/audit.log 报错原因
cat /var/log/messages 此日志没有关于报错的内容