你问的 “CentOS context 如何生效”,通常是指 SELinux 的 security context(安全上下文) 在 CentOS 上的生效方式。下面按常见场景系统说明。
SELinux 通过 安全上下文(context) 控制进程能访问哪些资源。
一个典型的 context 形如:
user:role:type:level
例如:
system_u:object_r:httpd_sys_content_t:s0
ls -Z /var/www/html
restorecon 让 context 生效(最常见)当你手动改了文件或目录,但 context 不正确时:
restorecon -Rv /var/www/html
✅ 这是让 context 生效的标准方式
chcon 临时修改(重启或 restorecon 后失效)chcon -t httpd_sys_content_t /var/www/html/index.html
⚠️ 临时生效,不推荐长期使用
semanage + restorecon(推荐)semanage fcontext -a -t httpd_sys_content_t "/web(/.*)?"
restorecon -Rv /web
✅ 重启、restorecon 后仍然生效
semanage fcontext -l | grep httpd
getenforce
Enforcing ✅Permissive ⚠️(只记录不拦截)Disabled ❌(context 无效)如果是 Disabled,需要:
vi /etc/selinux/config
SELINUX=enforcing
然后 重启系统
改完 context 规则后 必须执行:
restorecon
某些挂载参数(如 nosuid, context=)会覆盖 SELinux context。
进程 context 由:
查看进程 context:
ps -eZ | grep httpd
# 1. 查看 SELinux 状态
getenforce
# 2. 查看文件 context
ls -Z /path
# 3. 设置永久规则
semanage fcontext -a -t type_t "/path(/.*)?"
# 4. 应用
restorecon -Rv /path
# 5. 查看日志
ausearch -m avc -ts recent
CentOS 中 SELinux context 要“永久生效”,必须用
semanage fcontext+restorecon;临时生效可用chcon,但重启或 restorecon 会失效。
如果你指的是 Docker / Kubernetes / systemd / 文件共享 / Samba / NFS context,可以告诉我具体场景,我可以针对性说明。