你问的 “CentOS 要用 context”,通常指的是 SELinux 中的 security context(安全上下文)。下面从“是什么、为什么需要、怎么用”三个角度说清楚。
在 CentOS(尤其是启用了 SELinux 的系统)中,每一个:
都有一个 安全上下文(context),格式类似:
user:role:type:level
例如:
system_u:object_r:httpd_sys_content_t:s0
其中最重要的是 type(类型),它决定了“谁可以访问谁”。
传统的 Linux 权限:
但这种方式太粗:
SELinux 用 context 做更细的控制:
不是“你是谁”,而是“你是什么类型”
例如:
httpd_t 进程httpd_sys_content_t 类型的文件即使文件权限是 777,
如果 context 不对,Apache 也访问不了。
例子:
/etc/shadow/var/log这就是 context 的价值。
CentOS / RHEL 系列:
所以:
在 CentOS 上“配服务不正常”,很多时候不是权限问题,而是 context 问题
查看:
ls -Z /var/www/html
修复:
semanage fcontext -a -t httpd_sys_content_t "/web(/.*)?"
restorecon -Rv /web
查看:
semanage port -l | grep http
添加:
semanage port -a -t http_port_t -p tcp 8080
查看:
ps -Z
如果你:
disabled)那就基本不用关心 context。
但:
生产环境 CentOS 不建议关闭 SELinux
CentOS 用 context,是为了用 SELinux 实现比传统权限更细、更安全的访问控制。
不懂 context,就永远搞不清“为什么权限对了还访问不了”。
如果你愿意,我可以:
你想看哪一个?