今天分享一下SELinux。
在一些教程中,往往会让你一开始就将SELinux关闭,但生产环境中有些是不允许关闭的,是有必要深入学习一下SELinux。篇幅有点长,希望耐心看完。
在使用 Linux 的过程中,你可能遇到过下面这些场景:
-
权限全给了,服务还是无法访问文件;
-
日志里一堆 “permission denied”,可你偏偏就是 root;
-
改了配置,重启没报错,就是跑不起来……
如果你遇到这些灵异事件,那大概率是——SELinux 在背后搞鬼!
1 什么是 SELinux?
SELinux(Security-Enhanced Linux) 是由美国国家安全局(NSA)最初开发的一套 安全访问控制机制,它为 Linux 系统提供了比传统用户权限(如 chmod、chown)更强、更细粒度的安全控制。
即使是 root 用户,也必须遵守它的规则!
2 为什么要有 SELinux?
传统的 Linux 安全机制靠文件权限控制,但它有一个致命缺陷:
root 可以为所欲为。
一旦某个服务被攻击拿到 root 权限,攻击者就能横着走。而 SELinux 通过强制访问控制(MAC),哪怕你是 root,只要没被允许,也寸步难行。
3 SELinux是怎么工作的
3.1 标签系统:给对象贴标签
在 SELinux 眼里,每个文件、目录、进程、端口都有一个“安全上下文”,本质就是一个标签。例如:
ls -Z /var/www/html/index.html