Linux

SELinux文件上下文

显示与识别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配置文件恢复这些设置。但是目录的默认参数可能会不一样。
例如下面这个目录(-F 开关选项强制修改所有上下文,而不只是类型上下文)会给/ftp目录分配一组不同的上下文:
#restorecon -F /ftp
#ls
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

原创文章,转载请注明: 转载自STM本文链接地址:SELinux文件上下文

发表评论

电子邮件地址不会被公开。 必填项已用*标注