selinux级别的不同对服务的影响
selinux是内核上的一个插件
vim /etc/sysconfig/selinux 配置文件
SELINUX=XXXX(disabled,enforcing)
作用:
1.给文件加上一个标签,不符合标签的文件无法访问
2.给功能加上一个开关
未修改selinux为强制前(disabled),可以上传文件,新建的文件也可以看到
修改selinix为强制级后重启,因为selinux是内核上的插件,只有重启才有效。
只有显示public_content_t的文件可以查看,其他的文件由于标签不符合无法查看。
chcon -t public_content_t /ftpdir/ -R 临时修改目录ftpdir的所有文件标签类型为public_content_t(在selinux服务重启后会失效)
修改匿名用户根目录为/ftpdir/
新建目录/ftpdir/后在该文件下建立file1-file55个文件
新建文件后查看该文件标签为default
匿名用户登录后查看不到匿名用户加目录下的文件,因为其标签为default。
递归修改修改标签类型为public后
可以进入该目录
两次重启后(都得修改selinux的值,第一次由disabled改为enforcing后重启,第二次由enforcing改为disabled后重启)查看该目录并登陆ftp查看文件,可以看到在两次重启后该目录的标签变为了default。
semanage -l 文件名(列出文件的标签)
Semanage查看不到自己新建目录的标签,因为该目录的标签只是临时修改,并未写进内核。而/var/ftp/则是系统服务本身就有的服务,所以加目录在/var/ftp下时可以查看
semanage fcontext -a -t 标签 文件名(-t表示添加的对象与类型,-a表示添加,表示给文件添加什么类型的标签)
semanage fcontext -a -t public_content_t /ftpdir/ 永久修改ftpdir目录的标签为public_content_t /
Selinux开启下上传文件(无法上传)
打开目录/var/ftp/pub(修改目录/var/ftp/pub的标签为public_content_t)
开启目录后,查看ftp的服务,ftp_home-dir(能否对目录进行操作)与ftpd_anon_write(能否对目录进行写)都是off,依旧无法上传,所以我们需要开启这两个服务。
在开启两个服务后,重新上传,发现可以上传。
troubleshoot
报错时系统会通过应用setroubleshoot-server来在日志中给出解决方案。
在桌面新建文件westosfile然后移动至目录/var/ftp/westosfile下
清空日志
登陆ftp服务,无法查看该文件
查看日志的报错
日志给出的解决方法
在shell中运行Do下命令“setsebool -P ftpd_full_access 1”
运行命令
再次登陆ftp查看文件,发现可以查看到文件westosfile
在运行该命令后,命令会一直运行,日志也会停止报错(该条命令会解决报错),若想要查看到错误,我们需要先关闭该命令(setsebool -P ftpd_full_access 0)。
删除setroubleshoot-server服务
然后清空日志,重新登陆ftp查看文件(比较这次清空日志后重新生成的日志与上次日志的不同)
可以看到本来可以看到的wetosfile无法查看了(因为我们停止了日志给出的解决方法服务,服务不再生效)。
重新查看日志,日志并没有给出解决方法,只是给出了错误。
重新安装setroubleshoot-server服务后清空日志,再次登陆ftp服务查看文件,还是无法查看。(清空日志是为了更好的观察日志给出的信息)
无法查看文件westosfile
再次查看日志给出的信息(查看日志是否给出了问题的解决方法)
日志的错误信息
错误的解决方法,可以看到提示让我们我们运行的命令“setsebool -P ftpd_full_access”再次出现。
运行该命令后再次登陆ftp查看文件,发现可以查看到westosfile文件
通过该实验我们可以知道系统通过setroubleshoot-server来在日志中给出我们错误问题的解决方法,若该服务被删除日志则不会对我们的错误问题给出解决方案。