自由决定的访问控制:基于用户和组的模型,标准的用户//其他权限安全模型

强制访问控制:基于对象并由更加复杂的规则控制,SELinux安全模型

SELinux:用于确定哪个进程可以访问哪些文件、目录和端口的安全规则

SELinux上下文:每个文件、进程和端口都具有特别的安全标签,策略用它来确定某个进程能否访问文件、目录和端口

SELinux上下文的种类:用户、角色、类型、敏感度

 目标策略根据类型上下文来制定自己的规则,类型上下文以_t结尾

eg:

   httpd_tweb服务器的类型上下文

   http_port_tweb服务器的端口类型上下文

   httpd_sys_content_t/var/www/html中的文件和目录的类型上下文

   tmp_t/tmp /var/tmp 中的文件和目录类型的上下文

pslscpmkdir都是用-Z来显示或设置SELinux上下文

SELinux的三种模式:

  强制模式enforcing:不仅记录而且提供保护,主动拒绝访问尝试tmp_t 的文件

 许可模式permissive:用于对问题进行故障排除,会记录在强制模式下拒绝的交互,暂时允许访问selinux正在限制的内容

  禁用模式disable:完全禁用selinux,需重启系统才能彻底禁用,或切换为另一模式

getenforce:显示当前使用的有效selinux模式

setenforce:修改当前的selinux模式,0 表示许可模式,1表示强制模式

  另一种方法:启动时将参数传递给内核,

传递内核参数enforcing=0,系统进入许可模式

enforcing=1,系统进入强制模式

指定selinux=0参数,表示禁用SELinux

        selinux=1参数,表示启用SELinux

设置默认SELinux模式

  使用配置文件/etc/selinux/config来更改默认的SELinux模式

  传递selinux=enforcing=内核参数会覆盖在/etc/selinux/config中的任何默认值

更改SELinux上下文

   通常父目录的上下文会分配给新建文件(适于vim,touch,cp),若文件是在其他位置创建并且权限得以保留,那么原始SELinux上下文将不会发生改变(mv,cp –a等)

  chcon:将文件上下文更改成已指定为该命令参数的上下文,-t指定上下文的类型

      eg:     chcon  –t  httpd_sys_content_t  /virtual

 restorecon:更改selinux上下文的首选方法,不会明确指定上下文,使用selinux策略中的规则来确定应该是那种上下文

      eg:     

定义SELinux默认文件上下文规则

  Semanage  fcontext 命令用于显示或修改restorecon命令用来设置默认文件上下文的规则,使用扩展正则表达式来指定路径和文件名,fcontext规则中最常用的扩展正则表达式是(/.*?:匹配/后跟任意数量的字符,它将会匹配在表达式前面列出的目录并递归,restorecon命令是policycoreutil软件包的一部分,semanagepolicycoreutil-python软件包的一部分

eg:semanage  fcontext  -a -t  httpd_sys_content_t  ‘/virtual(/.*)?’

     restorecon /virtual

SElinux布尔值

  是更改SELinux策略行为的开关,可以启用或禁用的规则

  getsebool:显示selinux布尔值及其当前值

  setsebool:修改selinux布尔值

        -P 修改selinux的策略,并使修改永久保留

semanage  boolean -l:显示布尔值是否为永久值,并提供该布尔值的简短描述

semanage  Boolean  -l –C:仅列出进过本地修改的SELinux布尔值状态