MENU

SELinux文件上下文

September 4, 2018 • Linux阅读设置

显示与识别 SELinux 文件上下文

  • 如果已经启动了 SELinux,则用 ls -Z 命令可以列出当前 SELinux 文件上下文
  • 输出结果中包含了普通的 ugo/rwx 所有权和权限数据,也指定了 SELinux 安全的四个元素:指定文件的 用户:角色:类型: MLS 级别
  • 文件的 SELinux 用户一般来说是 system_u 或 unconfined_u,这通常不会影响访问。
  • 大多数情况下,文件与角色有关
  • 主要的文件上下文是类型
例如 ftp 目录的文件上下文:drwxr-xr-x. root root system_u:object_r:public_content_t:s0
#上下文是系统用户 (system_u) 和系统对象 (object_r)、类型为与公开用户共享 (public_content_t)。
#如果我们给这个 FTP 服务创建了另一个目录,则需要把同样的安全上下文赋予此目录。
  • 显示 file_contexts 中所有的默认文件上下文
semanage fcontext -l
  • 查看目录或文件的 SELinux 安全性上下文
ls -Z [目录 | 文件]
  • 查看当前所有运行进程的上下文
ps -eZ

用户和角色不会经常改变,但是进程的类型变化很大,这是为了与运行进程的目的相匹配。
部分 SELinux 类型与相应的服务相匹配,虽然 SELinux 类型各不一样,但是他们都与正在运行的进程相一致

设置与恢复默认的 SELinux 文件上下文

  • 在 /etc/selinux/targeted/contexts/files/file_contexts 文件中可以配置默认的上下文。
  • 当我们操作出错并想恢复一个文件原来的 SELinux 设置,则 restorecon 命令可以根据 file_contexts 配置文件恢复这些设置。
  • 但是目录的默认参数可能会不一样。
#例如下面这个目录会给 /ftp 目录分配一组不同的上下文
#-F 开关选项强制修改所有上下文,而不只是类型上下文
restorecon -F /ftp
ls -Z
    drwxr-wr-w. root root system_u:object_r:default_t ftp
#注意,user 上下文不同于 /ftp 目录刚创建时的上下文。
#这是由于前面提到的 file_contexts 文件的第一行的原因,这一行应用前面提到的上下文:/.*  system_u:object_r:default_t
  • 使用 semanage fcontext -l 列出 file_contexts 文件中所有的默认文件上下文
SELinux 上下文定义使用了正则表达式
例如:(/.*)?             #这个正则表达式匹配 / 字符,
                        #后面跟任意数量的字符串 (.*),? 字符的意思是,括号内的整个正则表达式可被匹配 0 次或一次。
                        #因此,总体结果是匹配 / 后面跟任意数量的字符,或者匹配什么都没有的情况。
                        #这个正则表达式被广泛用于匹配一个目录及其包含的所有文件。

例如 /ftp (/.*)?        #通过这个正则表达式可以定义一个 SELinux 规则
#为 /ftp 目录及其中的所有目录 (匹配 /ftp 或 /ftp/ 下所有内容) 分配一个默认的类型上下文:semanage fcontext -a -t public_content_t '/ftp (/.*)?'

当为文件系统定义了新的默认策略后可以通过 restorecon 命令,将上下文设为对应的默认策略值:restorecon -RF /ftp

最后编辑于: June 10, 2019
Archives QR Code
QR Code for this page
Tipping QR Code