selinux的设置和影响

本章的内容围绕selinux来讲,前面也提到过做lftp试验时要注意selinux的状态,今天将会仔细讲解:

selinux:内核级加强型防火墙
当处于enforcing时,selinux会给每一个文件加载一个标签,即context安全上下文。当文件允许被访问:程序的上下文和文件的上下文一致。

使用getenforce查看状态

 setenforce 1   ##enforcing    ##强制(既警告也拒绝)
 setenforce 0   ##permissive   ##警告
                ##disabled     ##关闭          ##在vim /etc/sysconfig/selinux里设置


实验:

     先把本机设置的vsftpd删除rm -rf /etc/vsftpd/vsftpd.conf
     然后重新安装yum reinstall vsftpd -y
     使用getenforce查看状态,更改文件:vim /etc/sysconfig/selinux
     编辑:SELINUX=enforcing

selinux的设置和影响_第1张图片
     reboot
再次getenforce,发现是enforcing


此时客户端的用户没有权限访问服务端
使用setenforce 0   ##使用getenforce可以看到permissive,permissive的状态下客户端用户可以查看到服务端:

#selinux对文件的影响

在enforing的情况下赋予虚拟用户权力
在服务端:

touch /mnt/westosfile1

mv /mnt/westosfile /var/ftp/


在客户端连接服务端,ls查看不到建立的westosfile1文件

在服务端,ls -Z /var/ftp看到westosfile1文件的安全上下文不是public:


所以客户端在连接时看不到,为了能够连接上服务端,需要进行如下操作:

1.临时设置

chcon -t public_content_t westosfile

 

使用ls -Z查看文件上下文是否改变:


如果给虚拟用户修改上下文:

vim /etc/vsftpd/vsftpd.conf


编辑加一条:anon_root=/ftphome

selinux的设置和影响_第2张图片
重启:

systemctl restart vsftpd

并且:

chcon -t public_content_t /ftphome/ -R

 

2.永久设置

vim /etc/sysconfig/selinux

设置:disabled

selinux的设置和影响_第3张图片
  vim /etc/sysconfig/selinux设置成enforcing

selinux的设置和影响_第4张图片

reboot        ##以上的两步操作是为了完全关闭selinux


现在再次进去ls -Z /ftphome查看会发现ftphome不是public


 但是ls -Z /var/ftp 发现是public的,因为这是系统自己设定的


使用:

  

semanage fcontext -l | grep /var/ftp      ##查看系统本身的配置文件怎么写
semanage fcontext -l | grep /ftphome      ##查看虚拟用户的信息和系统配置的信息有什么不同


设置:

semanage fcontext -a -t public_content_t '/ftphome(/.*)?'


现在再使用 semanage fcontext -l | grep /ftphome发现上下文被改成public了


但是使用ls -Zd /ftphome/查看的话,会发现:

怎么还是object的上下文呢?我们要使用:

restorecon -Rvvf /ftphome/

才能看到信息都被改变了


#selinux对服务的影响

1.匿名用户的上传:
 

vim /etc/vsftpd/vsftpd.conf


   重启:

systemctl restart vsftpd

修改匿名用户的组和权限:
  

chgrp ftp /var/ftp/pub/
chmod 775 /var/ftp/pub/


打开上传开关:

setsebool -P ftpd_anno_write on


     这个时候还不能上传文件,因为只有读权限:

chcon -t public_content_rw_t /var/ftp/pub/


 客户端的匿名用户 就可以了上传文件了。

2.本地用户的上传:
打开本地用户上传开关:

 setsebool -P ftp_home_dir on

就可以在客户端上传文件了。

#对selinux进行排错

先下载:setroubleshoot-server.x86_64    这是排错的工具,下载后就可以使用了。

1.

2.提前清空日志信息方便后面观察:

如果在登陆时产生错误,报错提醒显示在:/var/log/messages里

解决方案在:/var/log/audit/audit.log里

如果卸载了setroubleshoot,报错提醒会继续显示,但是没有解决方案了。

你可能感兴趣的:(selinux的设置和影响)