控制selinux文件上下文

目标

  使用semanage fcontext命令,管理决定了文件和目录默认上下文的selinux策略规则。
  使用restorecon命令,将selinux策略多定义的上下文应用到文件和目录。

名词解释

  • 初始selinux上下文

  在运行selinux的系统上,所有进程和文件都会有相应的标签。标签代表了与安全有关的信息,称为selinux上下文。

  新文件通常从父目录继承其selinux上下文,从而确保它们具有适当的上下文。

但是,有两种不同的方式可能会破坏该继承过程。首先,如果您在与最终目标位置不同的位置建立文件,然后移动文件,则该文件将具有创建它时所在目录的selinux上下文,而不是目标目录的selinux上下文。其次,如果是复制一个保留selinux上下文的文件,则selinux上下文将反应原始文件的位置。

命令操作

  • 查询上下文

语法:semanage fcontext 选项
a:添加上下文标签
l:查询上下文标签
d:删除上下文标签

[root@sinfotek ~]# ll -Z yanxiubao 
-rw-r--r--. root root system_u:object_r:admin_home_t:s0 yanxiubao
[root@sinfotek ~]# cp yanxiubao /tmp/
[root@sinfotek ~]# ll -Z /tmp/yanxiubao 
-rw-r--r--. root root unconfined_u:object_r:user_tmp_t:s0 /tmp/yanxiubao
##将root目录下的文件复制到其他目录,则该文件会继承目标目录的默认标签。

[root@sinfotek ~]# chcon -t admin_home_t /tmp/yanxiubao 
[root@sinfotek ~]# ll -Z /tmp/yanxiubao 
-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 /tmp/yanxiubao
##更改该文件的当前生效标签,使其保持与源文件的标签一致,默认标签依然继承tmp目录

[root@sinfotek ~]# chcon -t user_tmp_t yanxiubao 
[root@sinfotek ~]# ll -Z yanxiubao 
-rw-r--r--. root root system_u:object_r:user_tmp_t:s0  yanxiubao
[root@sinfotek ~]# restorecon -v yanxiubao 
restorecon reset /root/yanxiubao context system_u:object_r:user_tmp_t:s0->system_u:object_r:admin_home_t:s0
[root@sinfotek ~]# ll -Z yanxiubao 
-rw-r--r--. root root system_u:object_r:admin_home_t:s0 yanxiubao
##更改了文件的当前生效标签后,使用restorecon命令还原该文件的默认标签

[root@sinfotek ~]# ll -Z yanxiubao 
-rw-r--r--. root root system_u:object_r:admin_home_t:s0 yanxiubao
[root@sinfotek ~]# semanage fcontext -a -t user_tmp_t /root/yanxiubao
[root@sinfotek ~]# ll -Z yanxiubao 
-rw-r--r--. root root system_u:object_r:admin_home_t:s0 yanxiubao
[root@sinfotek ~]# restorecon -v yanxiubao 
restorecon reset /root/yanxiubao context system_u:object_r:admin_home_t:s0->system_u:object_r:user_tmp_t:s0
[root@sinfotek ~]# ll -Z yanxiubao 
-rw-r--r--. root root system_u:object_r:user_tmp_t:s0  yanxiubao
##使文件的生效标签永久更改,先更改该文件的默认标签,然后还原其默认标签即可。


[root@sinfotek ~]# ll -Zd tmp
drwxr-xr-x. root root system_u:object_r:admin_home_t:s0 tmp
[root@sinfotek ~]# semanage fcontext -a -t user_tmp_t '/root/tmp(./*)?'
[root@sinfotek ~]# ll -Zd tmp
drwxr-xr-x. root root system_u:object_r:admin_home_t:s0 tmp
[root@sinfotek ~]# restorecon -v /root/tmp
restorecon reset /root/tmp context system_u:object_r:admin_home_t:s0->system_u:object_r:user_tmp_t:s0
[root@sinfotek ~]# ll -Zd tmp
drwxr-xr-x. root root system_u:object_r:user_tmp_t:s0  tmp
[root@sinfotek ~]# touch tmp/aaa
[root@sinfotek ~]# ll -Zd tmp/aaa 
-rw-r--r--. root root unconfined_u:object_r:user_tmp_t:s0 tmp/aaa
##更改目录的上下文标签,使其目录下的文件标签均为指定的标签

文档更新时间: 2022-09-30 17:58   作者:xiubao yan