在 CentOS(以及 RHEL 系系统)里,“context”通常有三种常见含义,迁移方式也不同。先确认你说的 context 是哪一种,下面分别说明。
如果你是说 文件/目录的 SELinux 安全上下文(security context),迁移通常出现在:
ls -Z /path/to/file
ps -Z
restorecon -Rv /path
旧系统导出:
getfattr -R -m security.selinux /data > selinux.context
新系统恢复:
setfattr --restore=selinux.context
⚠️ 仅适用于同版本 CentOS / 同 SELinux 策略
rsync -avzX /data/ root@newhost:/data/
-X 保留 SELinux context
如果你是指导出 systemd service 的运行上下文(User / Environment / WorkingDirectory 等):
直接复制 unit 文件:
cp /usr/lib/systemd/system/xxx.service /newhost/
systemctl daemon-reload
systemctl enable xxx
查看 context:
systemctl show xxx.service
如:
runusersu -id -Z
semanage login -l
semanage login -a -s user_u username
导出:
semanage login -l > login.txt
| 场景 | 类型 |
|---|---|
ls -Z 看到 system_u:object_r:* |
SELinux context |
| 服务启动环境不对 | systemd context |
| 用户登录后权限异常 | 登录 context |
如果你能补一句:
我可以直接给你可执行的一步步命令。