restorecon用于按SELinux策略自动恢复文件或目录的默认安全上下文,无需手动指定类型;适用于mv移动、cp未带-p复制、chcon修改后回退、semanage添加规则后触发生效等场景,是修复上下文错乱导致访问拒绝的核心命令。

直接运行 restorecon 就能按系统策略把文件或目录的 SELinux 上下文恢复成默认值,不需要手动指定目标类型——它会自动查策略库匹配该路径应有的标签。
什么时候必须用 restorecon
以下情况会导致文件上下文错乱,SELinux 拒绝访问(比如网页打不开、服务起不来、命令报 permission denied),这时 restorecon 是最直接有效的修复手段:
- 用
mv移动文件(如从/root移到/var/www/html),上下文跟着一起搬过来了 - 用
cp复制但没加-p或--preserve=context,新文件继承父目录上下文而非目标路径规则 - 手动执行过
chcon修改了上下文,后来想退回到系统默认 - 用
semanage fcontext -a添加了新的永久上下文规则,但没生效——必须靠 restorecon 触发应用
常用操作方式
核心是让 restorecon 知道处理哪个路径,并控制是否递归、是否反馈结果:
- 修单个文件:
restorecon /var/www/html/index.html - 看过程(推荐首次使用):
restorecon -v /var/www/html/index.html,会输出类似Relabeled ... to ... - 修整个目录及其所有子项:
restorecon -Rv /var/www/html/ - 批量处理多个路径(适合脚本):
restorecon -v /etc /usr/bin /var/log - 从文件读取路径列表:
restorecon -f /tmp/paths_to_fix.txt(每行一个绝对路径)
配合 semanage 设置自定义路径时的关键步骤
如果你把网站文件放在非标准位置(比如 /webdata),需要两步才能让 httpd 正常访问:
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
- 先定义规则:
semanage fcontext -a -t httpd_sys_content_t "/webdata(/.*)?" - 再触发生效:
restorecon -Rv /webdata(只运行这一步,规则才真正写入文件)
缺了 restorecon,semanage 的设置只是“记在册子上”,不会改变磁盘上任何文件的实际标签。
验证是否修好
用 ls -Z 对比前后变化:
- 修之前可能显示:
unconfined_u:object_r:admin_home_t:s0 - 修之后应变成:
system_u:object_r:httpd_sys_content_t:s0(以网页文件为例)
同时检查对应服务是否恢复正常——比如浏览器能打开页面、systemctl status httpd 不再报 AVC 拒绝日志。

















