restorecon可自动将文件或目录安全上下文恢复为系统策略默认值,适用于mv移动、cp未带-p/-z复制、chcon临时修改后还原、semanage规则更新后生效等场景;常用组合包括-r递归、-v详细输出、-n模拟执行、-f强制重置、-h处理符号链接本身。

直接用 restorecon 就能修复——它不依赖你记住原始标签,而是查系统策略库,自动把文件或目录的安全上下文“拉回”该位置本该有的默认值。
什么时候必须用 restorecon
常见触发场景包括:
- 用
mv移动文件(比如把~/index.html移到/var/www/html/),上下文跟着原路径走,没随目标目录变; - 用
cp复制文件但没加-p或-Z,新文件继承源上下文而非目标目录策略; - 手动执行过
chcon临时改过类型,后续想还原; - 用
semanage fcontext添加或修改了永久上下文规则,但还没生效——restorecon是让它落地的唯一动作。
最常用的操作方式
日常修 context,这几个组合覆盖 95% 场景:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 修单个文件:
restorecon /var/www/html/index.html - 修整个目录(含所有子文件、子目录):
restorecon -R /var/www/html/ - 边执行边看变化(方便确认是否真有改动):
restorecon -Rv /var/www/html/ - 只处理当前目录下匹配通配符的文件(如所有 .conf):
restorecon -v /etc/httpd/conf/*.conf
几个关键细节要注意
避免误操作或效果不符预期:
-
-n参数是“试运行”,不真改,只报告哪些会变——调试时先加它看看; -
-F强制重置,跳过“是否已符合默认”的判断,适合彻底刷新(比如批量清理后); -
-e可排除某个子目录(如restorecon -R -e /var/www/html/cache /var/www/html/); - 符号链接本身不带上下文,
restorecon默认不处理它指向的目标;加-h才作用于链接目标(极少需要)。
怎么验证修好了
改完立刻用 ls -Z 对比:
- 查单个文件:
ls -Z /var/www/html/index.html,确认 type 字段是httpd_sys_content_t而不是admin_home_t或user_home_t; - 查目录本身:
ls -Zd /var/www/html/,应为httpd_sys_script_exec_t或httpd_sys_content_t(依用途而定); - 如果服务仍报错,配合
ausearch -m avc -ts recent看最新拒绝日志,确认是不是 context 已对但其他策略(如布尔值)没开。










