selinux 内核级加强型火墙 (rh433策略课详细讲RCSS安全专家)
作用:会给每一个文件加载标签contaxt(安全上下文)
比如 文件的public_content_t:s0
程序的 mnt_t:s0
两者不匹配就不可以运行
getsebool -a 设置bool功能开关
getsebool -a |grep ftp 查看ftp的开关
对服务是功能的开关 对文件是加标签
getenforce 查看状态
三个状态 1 enforcing 强制 (警告加拒绝)
2 permissive 警告
3 disabled 关闭
前两个切换到最后一个 都需要重启
/etc/selinux/config 可以修改
setenforce 0 改称permissive 警告状态
setenforce 1 改称enforcing 强制状态
临时更该安全上下文
chcon -t public_content_t /ftphome/ -R
就改了 一般更改文件 -R 第归 ,更该目录及内容
这时关闭selinux 重启
就会还原 这个命令再shell是临时的(很多命令都是)
永久更该 (一般用于目录)
semanage fcontext -a -t public_content_t '/ftphome(/.*)?'
-a是添加 -t是类型 -l 是列出
(/.*)? 是ftphome 这个目录及里面创建的文件都更该安全上下文
因为这些是号,所以要加单引号。
semanage fcontext -l |grep /ftphome 就可以查看是否添加到了列表里
restorecon -RvvF /ftphome/ 重新存储信息
setsebool -P (永久开启,不加重启后失效) ftp_home_dir on
开启服务
因此要匿名用户在 selinux开启情况下上传步骤
setsebool -P ftpd_anon_write on
setsebool -P ftp_home_dir on
chgrp ftp /var/ftp/pub
chmod 775 /var/ftp/pub
chcon -t public_content_rw_t /var/ftp/pub/
因为本身public_content_t是只读,需要读写public_content_rw_t
setroubleshoot-server 软件是用来记录 selinux 日志的
在 /var/log/audit/audit.log
而/var/log/messages 是记录日志与提供解决方案
测试时候,随意创建一个文件到桌面上,然后移动到/var/ftp/下,登陆后ls 就可以查看日志解决方案