SElinux简介
SElinux是security enhanced linux安全加强linux。一个进程是否能够访问一个文件取决于发起进程的用户和文件的权限。
比如: SRVD 想访问/var/www/html/*中文件,我们创建了用户srvuser此时是否能够访问/var/www/html/*的文件,取决于srvuser的权限。我们创建的文件默认路径是644,文件夹是755。srvuser可以访问fstable和passwd文件,如果后黑客劫持了SRVD进程,就可以访问一些重要的文件了,这将是一件很可怕的事了!
再比如用户gentoo,创建了一个文件,想让用户suse访问,怎么办呢?改变其他用户组的权限?那么其他用户将都能访问,这并不是我们想要的。在现有的模型下很难对单个用户控制对单个文件权限的控制。于是redhat就为我们提供了SElinux。
SElinux定义了那些用户可以访问那些文件,就是提供了一系列的机制,来限制用户和文件的权限。举个例子:
Subject operate Object
一个主题对客体的操作通过一系列的策略来控制(policy,rules)
主题: user,process
客体: file,directory,user,process,socket等
系统对主题和客体分了类型,对主题的分类,分了域(domain);对客体分了类型(type)。
为了快速的读取策略把规则做成了二进制文件,同时为了方便的改变策略,我们把它做成了bool开关,每条策略提供了开关的功能。但是在系统中有太多的subject和object,所以redhat对其采取了target的策略,仅限制一些必要的目标。在/etc/selinux/config配置SElinux SELINUX=enforcing/permissive/disabled SELINUX=targeted/strict(没个文件都涉及到)
查看当前SElinux状态用:getenforce,设置:setenforce 1(开启) 2(临时关闭)。也可以通过向内核传递参数来这只SElinux(将在以后介绍)。
在ls -Z中可以查看文件的类型。ps aux会显示进程的域。id username也可以查看用户的域。getsebool 可以查看系统中的bool开关。