加入收藏 | 设为首页 | 会员中心 | 我要投稿 拼字网 - 核心网 (https://www.hexinwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

SELinux默认安全上下文的查询和更改semanage命令

发布时间:2022-07-08 14:13:34 所属栏目:Linux 来源:互联网
导读:前面讲到,restorecon 命令可以将文件或目录恢复成默认的安全上下文,这就说明每个文件和目录都有自己的默认安全上下文,事实也是如此,为了管理的便捷,系统给所有的系统默认文件和目录都定义了默认的安全上下文。 那么,默认安全上下文该如何查询和修改呢
  前面讲到,restorecon 命令可以将文件或目录恢复成默认的安全上下文,这就说明每个文件和目录都有自己的默认安全上下文,事实也是如此,为了管理的便捷,系统给所有的系统默认文件和目录都定义了默认的安全上下文。
 
  那么,默认安全上下文该如何查询和修改呢?这就要使用 semanage 命令了。该命令的基本格式如下:
 
  [root@localhost ~]# semanage [login|user|port|interface|fcontext|translation] -l
 
  [root@localhost ~]# semanage fcontext [选项] [-first]  file_spec
 
  其中,fcontext 主要用于安全上下文方面,-l 是查询的意思。除此之外,此命令常用的一些选项及含义,如表 1 所示。

  选项 含义
 
  -a 添加默认安全上下文配置。
 
  -d 删除指定的默认安全上下文。
 
  -m 修改指定的默认安全上下文。
 
  -t 设定默认安全上下文的类型
 
  【例 1】查询默认安全上下文。
 
  [root@localhost ~]# semanage fcontext -l
 
  #查询所有的默认安全上下文
 
  …省略部分输出…
 
  /var/www(/.*)? all files
 
  system_u:object_r:httpd_sys_content_t:s0
 
  …省略部分输出…
 
  #能够看到/var/www/目录下所有内容的默认安全上下文都是httpd_sys_content_t
 
  所以,一旦对 /var/www/ 目录下文件的安全上下文进行了修改,就可以使用 restorecon 命令进行恢复,因为默认安全上下文已经明确定义了。
 
  【例 2】修改默认安全上下文。
 
  那么,可以修改目录的默认安全上下文吗?当然可以,举个例子:
 
  [root@localhost ~]# mkdir /www
 
  #新建/www/目录,打算用这个目录作为apache的网页主目录,而不再使用/var/www/html/目录
 
  [root@localhost ~]# ls -Zd /www/
 
  drwxr-xr-x.root root unconfined_u:object_r:default_t:s0 /www/
 
  #而这个目录的安全上下文类型是default_t,那么apache进程当然就不能访问和使用/www/目录了
 
  这时我们可以直接设置 /www/ 目录的安全上下文类型为 httpd_sys_content_t,但是为了以后管理方便,我打算修改 /www/ 目录的默认安全上下文类型。先查询一下 /www/ 目录的默认安全上下文类型,命令如下:
 
  [root@localhost ~]# semanage fcontext -l | grep "/www"
 
  #查询/www/目录的默认安全上下文
 
  查询出了一堆结果,但是并没有 /www/ 目录的默认安全上下文,因为这个目录是手工建立的,并不是系统默认目录,所以并没有默认安全上下文,需要我们手工设定。命令如下:
 
  [root@localhost ~]# semanage fcontext -a -t httpd_sys_content_t "/www(/.*)?"
 
  #这条命令会给/www/目录及目录下的所有内容设定默认安全上下文类型是httpd_sys_content_t
 
  [root@localhost ~# semanage fcontext -l | grep "/www"
 
  …省略部分输出…
 
  /www(/.*)? all files system_u:object_r:httpd_sys_content_t:s0
 
  #/www/目录的默认安全上下文出现了
 
  这时已经设定好了 /www/ 目录的默认安全上下文。
 
  [root@localhost ~]# ls -Zd /www/
 
  drwxr-xr-x.root root unconfined_u:object_r:default_t:s0 /www/
 
  #但是查询发现/www/目录的安全上下文并没有进行修改,那是因为我们只修改了默认安全上下文,而没有修改目录的当前安全上下文
 
  [root@localhost ~]# restorecon -Rv /www/
 
  restorecon reset /www context
 
  unconfined_u:object_r:default_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
 
  #恢复一下/www/目录的默认安全上下文,发现类型已经被修改为httpd_sys_content_t
 
  默认安全上下文的设定就这么简单。
 

(编辑:拼字网 - 核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!