一、运行说明
主体:类似等同于进程
目标:一般是文件系统
策略:
1. targeted:针对网络服务限制较多,默认
2. strict:完整的SELinux限制
安全上下文:主体能不能访问目标除了策略指定外,主体与目标的安全上下文必须一致才能访问。设置错误,就无法访问,会提示权限不符。安全上下文放置在文件的inode内。
访问流程如下图所示(图片来自鸟哥的linux私房菜):
安全上下文说明:
[root@www ~]# ls -Z
drwxr-xr-x root root root:object_r:user_home_t Desktop
-rw-r--r-- root root root:object_r:user_home_t install.log
-rw-r--r-- root root root:object_r:user_home_t install.log.syslog
安全性上下文主要用冒号分为三个栏位,这三个栏位的意义为:
Identify:role:type
身份识别:角色:类型
身份识别 (Identify):
相当与帐号方面的身份识别,主要的身份识别则有底下三种常见的类型:
root:表示 root 的帐号身份,如同上面的表格显示的是 root 家目录下的数据
system_u:表示系统程序方面的识别,通常就是程序
user_u:代表的是一般使用者帐号相关的身份。
系统上面大部分的数据都会是 system_u 或 root ,如果是在 /home 底下的数据,大部分应会是 user_u
角色 (Role):
透过角色栏位,我们可以知道这个数据是属於程序、文件资源还是代表使用者。一般的角色有:
object_r:代表的是文件或目录等文件资源
system_r:代表的就是程序啦!不过,一般使用者也会被指定成为 system_r!
类型 (Type) :
在默认的 targeted 策略中, Identify 与 Role 栏位基本上是不重要的。 基本上,一个主体程序能不能读取到这个文件资源,与类型栏位有关!而类型栏位在文件与程序的定义不太相同,分别是:
type:在文件资源 (Object) 上面称为类型 (Type);
domain:在主体程序 (Subject) 则称为领域 (domain),需要与 type 搭配,则该程序才能够顺利的读取文件资源啦!
案例:
二、模式与管理
模式
SELinux的三种模式:
enforcing:强制,代表在运行中,且已经正确开始限制domain/type
permissive:宽容,运行中,仅有警告信息不限制。
disable:关闭SELinux
管理
getenforce:查看当前SELinux模式
sestatus:查看SELinux策略
/etc/selinux/config:配置文件
setenforce [0/1] 仅用与以下两种模式的切换,涉及其他模式则需要重启
0:切换为permissive模式
1:切换为enforcing模式
*修改安全上下文:*
chcon [-R] [-t type] [-u user] [-r role] 文件
chcon [-R] --reference=范例文件 文件
-R :目录子目录都修改
-t :安全上下文的类型,如:-t httpd_sys_content_t
-u :后接身份识别,如:-u system_u
-r :后接角色,如:-r system_r
--reference=范例文件 :拿范例文件当模板修改后接文件的类型
*恢复默认上下文:*
restorecon [-Rv] file/dir
-R :包含子目录一起修改
-v :显示过程到屏幕