1.什么是selinux
SELinux(Security-Enhanced Linux),是通过MAC(强行访问控制)来控制进程对文件的访问。
selinux的运行模式大致是这样,制定“策略”来控制“主体(subject)”对“目标(object)”的访问, 可以这样理解三要素,主体(进程) 目标(文件系统) 策略(规则)
2.selinux的启动、关闭和查看
查看selinux状态 getenforce 或者sestatus
配置文件的位置 /etc/selinux/config (配置永久生效)
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - SELinux is fully disabled.
SELINUX=disabled
# SELINUXTYPE= type of policy in use. Possible values are:
# targeted - Only targeted network daemons are protected.
# strict - Full SELinux protection.
SELINUXTYPE=targeted
转换成permisssive宽容模式 setenforce 0
转换成enforceing强制模式 setenforce 1
3.selinux策略和规则
-Z查看安全上下文信息
ls -Z
ps aux -Z
SElinux的安全上下文的格式:
USER 用户字段
这个字段用来记录用户登录系统后所属的SElinux的身份的。
USER 通常以 _u为后缀,常见的如下:
System_u 系统账号类型的使用者
User_u 真实用户类型的使用者
Root 超级用户的使用者
说明:targeted安全策略并未支持USER字段
ROLE 角色字段
ROLE 通常以 _r为后缀
说明:targeted安全策略并未支持ROLE字段
TYPE字段
TYPE 类型字段通常以 _t为后缀的。这个字段是SElinux安全上下文中最常用也是最重要的字段。
Object表达成type,subject则对应为domain了;
下列表格列举了常见的TYPE字段
项目说明
Unconfiged_t 未设置类别
Default_t 默认类别
Mnt_t 代表挂载点的类型,/mnt/中的文件属于这个类别
Boot_t 作为开机文件的类型,/boot/中文件属于这个类别
Bin_t 作为二进制执行文件,/bin中多数属于这个类别
Sbin_t 作为系统管理类型的文件,/sbin中属于这个类别
Device_t 代表设备文件. /dev 下属于这个类别
Lib_t 连接库类型 /lib 下属于这个类别
Tty_device_t 代表终端机或控制台设备
Su_exec_t 具备SU功能的执行文件
Java_exec_t JAVA相关的执行文件
Public_content_t 公共内容类型的文件。如:FTP,NFS等服务器文件
Shadow_t 代表存储密码文件的类型
Httpd_t 作为HTTP文件的相关类别
[root@localhost ~]# ll -Zd /usr/sbin/httpd /var/www/html
-rwxrwxrwx root root system_u:object_r:httpd_exec_t:s0 /usr/sbin/httpd
drwxrwxrwx root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html
注:ll是ls -l的别名
解释:httpd文件具有httpd_exec_t这个类型,而httpd domain(通俗一点就是httpd这个进程)被设置成可以只读取httpd_sys_content_t这个类型的目标文件。
重设SElinux的安全上下文
chcon
-R 文件夹
-t 接type类型
-u 接user类型
-r 接role类型
chcon -t httpd_sys_content_t /var/www/html/html/index.html