你说的 CentOS 的 context 一般是指 SELinux 的 security context(安全上下文)。
同步/修复 context 是很常见的操作,下面按常见场景说明。
在 CentOS/RHEL 上,每个文件、目录、进程都有一个类似:
system_u:object_r:httpd_sys_content_t:s0
SELinux 根据 context 决定是否允许访问。
查看 context:
ls -Z
ps -Z
restorecon -Rv /path/to/dir
示例:
restorecon -Rv /var/www/html
✅ 最安全、最常用
restorecon -v /etc/nginx/nginx.conf
ls -Z /var/www/html
chcon -t httpd_sys_content_t /var/www/html/index.html
⚠️ 不推荐长期使用
当目录长期需要某种 context 时,必须写规则:
semanage fcontext -a -t httpd_sys_content_t "/data/web(/.*)?"
restorecon -Rv /data/web
semanage fcontext -l | grep web
如果你刚刚:
可以执行:
touch /.autorelabel
reboot
系统重启后会自动重新标记整个文件系统
⚠️ 重启时间可能较长
| 目录 | 常见 context |
|---|---|
| /var/www/html | httpd_sys_content_t |
| /var/log | var_log_t |
| /etc | etc_t |
| NFS 挂载 | nfs_t |
| Samba 共享 | samba_share_t |
如果服务(httpd / nginx / mysql)因 SELinux 失败:
ausearch -m avc -ts recent
audit2why < /var/log/audit/audit.log
✅ 90% 的情况用这个就够了
restorecon -Rv /path
✅ 长期使用用这个
semanage fcontext
restorecon
✅ 系统级修复
touch /.autorelabel
reboot
如果你能具体说一下:
我可以给你一步到位的修复命令。