centos8 selinux机制

redrobot / 2023-08-16 / 原文

 

 

Permission denied

在CentOS 6.4中TFTP出现TFTP error: 'Permission denied' 

 

这个是由于selinux机制引起的不是文件夹的权限问题。

所以vi /etc/sysconfig/selinux 修改为:SELINUX=permissive
如果不想重启系统,执行:sudo setenfore 0

在开发板上执行:[root@EmbedSky /]# tftp -g -r aa 192.168.1.101

成功!

如果上传文件出现:tftp: server error: (1) File not found

解决方法:在/etc/xinetd.d/tftp文件server_args的-s选项后面添加-c

执行service xinetd restart成功。记得tftpboot权限设置。

附:关闭SELinux方法

1、修改主配置文件,将

SELINUX=permissive改为SELINUX=permissive或者disabled

值得注意的是:修改主配置文件要重启后才能生效

2、使用命令来关闭SELINUX(可以不用重启服务器)

setenforce 0

这命令并不是关闭SELINUX而是将其改为兼容模式(permissive)

setenforce 1

将其改为强制安全模式(permissive)

 
 
 
 

一、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     # -R 表示递归

注意:如果要恢复安全上下文,修改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值

 
 
 
 
 
 
参考:
 

http://www.taodudu.cc/news/show-3592898.html?action=onClick