一、SELinux简介
1、什么是SELinux:
SELinux(security enhanced linux)安全增强型Linux系统,它是一个linux内核模块,也是Linux的一个安全子系统。
Selinux的主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)
2、SELinux有两个级别:
强制、警告
setenforce 0 :表示警告(Permissive)
setenforce 1 :表示强制(Enforcing)
3、SELinux相当于一个插件(内核级的插件)
4、SELinux功能开启后,会关闭系统中不安全的功能
5、查看日志中的警告
cat /var/log/audit/audit.log
6、修改SELinux的状态
vim /etc/sysconfig/selinux
状态分为以下三种:
SELINUX=enforcing #selinux开启,级别为强制
SELINUX=permissive #selinux开启,级别为警告
SELINUX=disabled #selinux关闭
7、SELinux有两个功能
1、程序访问文件 :安全上下文
安全上下文的临时更改
chcon -t 安全上下文 文件
chcon -R -t 安全上下文 目录
设置后,可通过ls -lZ进行查看
2、程序访问功能:sebool
selinux 对服务功能添加的开关
#查看xxx的功能开关
getsebool -a | grep xxx
二、selinux的用法:影响文件的安全上下文
(一)修改文件的安全上下文
当我们从别的地方复制一个文件到/var/ftp,而当我们登录lftp之后,发现看不到该文件,是因为这个文件的安全上下文和/var/ftp的安全上下文不匹配,这就是selinux的保护机制,所以我们需要将这个文件的安全上下文修改和/var/ftp的达到一致。
1、创建文件
touch /mnt/file1
2、将该文件移动到/var/ftp下
注:为什么是移动而不是复制,移动是重命名的过程,文件的属性和权限不会改变,文件的属性和权限不会改变,而复制是新建文件的过程,文件的属性和权限等等可能会发生改变。
mv /mnt/file /var/ftp
3、通过lftp IP 命令 查看当前目录下的文件
lftp 172.25.254.210 ls

发现并没有生成file1文件
4、切换至 /var/ftp 下
cd /var/ftp
5、通过ls -Z 查看文件类型【包括文件的安全上下文属性】
ls -z

也可以通过 semanager fcontext -l | grep /var/ftp 查看/var/ftp的安全上下文
semanager fcontext -l | grep /var/ftp

6、然后修改file1的安全上下文
chcon -t public_content_t file1
7、然后执行lftp IP ls 命令 进行查看
lftp 172.25.254.210 ls

semanage fcontext -l 显示内核已经记录的安全上下文
(二)修改目录的安全上下文
/var/ftp是lftp的默认发布目录,它默认的安全上下文是public_content_t,如果我们想要修改/var/ftp的默认发布目录,就必须修改这个新的发布目录的安全上下文
实例步骤如下:
1、创建目录
mkdir /jay
2、在该目录下创建文件
touch /jay/file
3、编写配置文件
vim /etc/vsftpd/vsftpd.conf
设置anon_root=/jay
4、重启服务
systemctl restart vsftpd
5、进行初次连接
lftp 172.25.254.210
6、ls
不会显示/jay和/jay里边的文件,因为其安全上下文不是content_public_t
注:setenfoce 0/1 ls 后可以显示里边的文件,说明这个问题的出现和selinux有关

7、修改/jay目录的安全上下文由两种方法,一种是临时的,一种是永久的
(1)临时的:
chcon -t -R public_content_t /jay
注意:如果要恢复安全上下文,修改selinux的配置文件,将selinux修改为disable后重启,再修改为enforcing重启,/jay的安全上下文会变回原样。
(2)永久地:
修改/jay和底下的所有文件的安全上下文,-a表示增加,-t表示类型
semanage fcontext -a -t public_content_t '/jay(/.*)/?'
查看/jay的安全上下文
semanage fcontext -l | grep /jay
递归刷新并显示刷新过程
restorecon -F vvR /jay
然后
lftp 172.25.254.210
ls
便可以查看

三、selinux的用法:对进程本身开关的影响sebool值