在 CentOS(以及 RHEL 系列)里常说的 “context 丢失”,一般指 SELinux 安全上下文(security context)丢失或不正确,常见表现有:
httpd_sys_content_t,结果变成了 default_t 或 unlabeled_tavc: deniedls -Z 看到的 context 不对下面按常见原因 + 解决办法说明。
例如:
cp file /var/www/html/
mv file /var/www/html/
cp 默认不会保留原 contextmv 在不同文件系统时会丢失 context✅ 正确做法:
cp -Z file /var/www/html/
# 或复制后修复
restorecon -Rv /var/www/html
tar xf backup.tar
default_t✅ 解决:
restorecon -Rv /path
例如:
context 或 seclabel)结果:
unlabeled_t✅ 检查:
mount | grep selinux
sestatus
如果你曾经:
SELINUX=disabled
然后又改回 enforcing,已经创建的文件不会自动恢复 context。
✅ 修复:
# 1. 确保 SELinux 是 enforcing / permissive
# 2. 重新打标
fixfiles onboot
reboot
# 或
restorecon -Rv /
比如:
:Z / :z 用错--xattrsls -Z /var/www/html/index.html
异常示例:
unlabeled_t
default_t
查看 SELinux 状态:
sestatus
看拒绝日志:
ausearch -m avc -ts recent
restorecon -Rv /var/www/html
fixfiles restore
touch /.autorelabel
reboot
cp --preserve=context
rsync -X
--selinux):Z如果你能说一下 具体场景(比如:哪个目录、什么操作之后、CentOS 几、是不是容器/Docker),我可以直接告诉你是哪一步导致 context 丢的。