马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
装服务装到一半被拒、改完权限还是没效果,很多时候不是 chmod 的问题,而是 SELinux 在拦。它是 Linux 的一个安全模块,通过强制访问控制(MAC)限制进程和用户对文件、端口等资源的访问。这篇讲清它干什么、关了会怎样、以及怎么确认当前的开关状态。
一、SELinux 的作用
SELinux(Security-Enhanced Linux)通过策略限制进程行为,即使某个进程或用户拿到了系统的一部分权限,策略照样能挡住它继续越界。三个主要价值:
- 增强安全性:用策略限制进程行为,防止系统被攻击或被恶意软件破坏。
- 最小化攻击面:攻击者即便拿到一部分权限,也难以进一步破坏。
- 细粒度权限控制:可以针对每个进程、每个文件设定访问规则。
二、关掉它的好处与代价
2.1 好处
- 减少兼容问题:一些老程序或特定服务与 SELinux 策略不兼容,关掉可直接避开这类报错。
- 简化运维:SELinux 的策略配置学习成本高,关掉能少一大块安全配置工作量。
- 轻微提升性能:访问判定本身要耗 CPU,高负载下开销更明显;不过常态下影响通常不大。
2.2 风险
关掉等于拿掉一层强制访问控制,遭遇外部攻击时系统被入侵的风险会上升。所以没有明确的兼容需求,生产环境建议保持开启。开发环境为了省事关掉可以,生产环境关之前先评估。
三、怎么关闭
sudo sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config && sudo setenforce 0
这条命令做了两件事:改配置文件(永久生效)+ setenforce 0(当前运行态立刻切到 permissive)。注意改完配置文件如果不重启,running 状态不会自动变 disabled,需要用下面的命令确认。
四、四种确认状态的办法
4.1 用 sestatus(最常用)
sestatus
输出 SELinux status: disabled 表示已关闭;SELinux status: enabled 表示仍启用。
4.2 看配置文件
cat /etc/selinux/config
输出示例:
SELINUX=disabled
SELINUXTYPE=targeted
SELINUX=disabled 为禁用;enforcing 强制模式;permissive 宽容模式(只记录不拦截)。
4.3 用 getenforce
getenforce
- Disabled:SELinux 已禁用;
- Enforcing:启用并强制执行;
- Permissive:启用但不强制(违规只打日志
)。
4.4 看 /sys/fs/selinux/enforce
cat /sys/fs/selinux/enforce
五、状态对照表
| 来源 | 值 | 含义 |
| getenforce | Disabled | 完全关闭 |
| getenforce | Permissive | 启用但不强制 |
| getenforce | Enforcing | 启用且强制 |
| 配置文件 | SELINUX=disabled | 下次重启后关闭 |
| /sys/fs/selinux/enforce | 0 / 1 / 2 | 禁用 / 强制 / 宽容 |
六、运维建议
- 先查后改:服务异常先看
getenforce,是 Enforcing 再看 /var/log/audit/audit.log 里有没有 AVC 拒绝记录。
- 临时放宽:
setenforce 0 只影响运行态,重启回原值,适合先验证是不是 SELinux 卡住。
- 永久关闭要改配置:只执行
setenforce 0 重启后会恢复,必须同步改 /etc/selinux/config。
- 更优解是写策略:生产环境优先用
ausearch + audit2allow 生成自定义策略,而不是整体关掉。
- 改完验证业务:切到 permissive 后跑一遍业务流程,确认不再有拒绝,再决定长期策略。
结论
SELinux 是 Linux 的强制访问控制层,安全收益明确,但配置复杂、偶发兼容问题。判断状态认准三个:getenforce(当前态)、cat /etc/selinux/config(永久配置)、cat /sys/fs/selinux/enforce(运行态数值)。临时排障用 setenforce 0,永久关闭才改配置;生产环境如果没有硬兼容需求,建议保留 Enforcing,用自定义策略解决问题,而不是整体关掉。
qidao123.com企服评测-应用市场 编辑提示 |