SELinux (Security-Enhanced Linux) 是 Linux 内核的一个安全模块,提供强制访问控制(MAC)机制,是对传统 Linux 自主访问控制(DAC)的补充。
强制访问控制(MAC):与传统的用户/组/权限(DAC)不同,SELinux 通过安全策略强制执行访问规则。
安全上下文:SELinux 为系统中的每个对象(文件、进程、端口等)分配安全标签,格式为:用户:角色:类型:级别
。
策略:定义哪些主体(如进程)可以访问哪些对象(如文件)的规则集合。
# 查看SELinux状态
getenforce
sestatus
# 临时更改模式
setenforce 0 # Permissive
setenforce 1 # Enforcing
# 永久更改模式(需编辑/etc/selinux/config)
# 查看文件/目录的安全上下文
ls -Z
# 查看进程的安全上下文
ps -Z
# 修改文件安全上下文
chcon -t httpd_sys_content_t /var/www/html/index.html
# 恢复默认安全上下文
restorecon -v /var/www/html/index.html
当遇到权限问题时:
1. 检查/var/log/audit/audit.log 或使用 ausearch
命令
2. 使用 sealert
分析问题
3. 生成并应用自定义策略模块(使用 audit2allow
)
SELinux 虽然增加了安全性,但也带来了复杂性。正确配置后,它可以显著提高系统的安全性。