温馨提示×

如何迁移centos context

小樊
46
2026-09-24 09:28:17
栏目: 智能运维

在 CentOS(以及 RHEL 系系统)里,“context”通常有三种常见含义,迁移方式也不同。先确认你说的 context 是哪一种,下面分别说明。


一、SELinux context(最常见)

如果你是说 文件/目录的 SELinux 安全上下文(security context),迁移通常出现在:

  • 系统重装 / 迁移服务器
  • 磁盘挂载到新机器
  • 备份恢复后 context 丢失

1️⃣ 查看当前 context

ls -Z /path/to/file
ps -Z

2️⃣ 手动修复 context(推荐)

restorecon -Rv /path

3️⃣ 批量迁移 context(从旧系统)

旧系统导出:

getfattr -R -m security.selinux /data > selinux.context

新系统恢复:

setfattr --restore=selinux.context

⚠️ 仅适用于同版本 CentOS / 同 SELinux 策略

4️⃣ 用 rsync 保留 context

rsync -avzX /data/ root@newhost:/data/

-X 保留 SELinux context


二、systemd 的 Context(service 配置)

如果你是指导出 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

三、用户/进程 Context(PAM / 登录上下文)

如:

  • runuser
  • su -
  • SELinux 用户映射

查看

id -Z

迁移 SELinux 用户映射

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

如果你能补一句:

  • CentOS 几?(6 / 7 / 8 / Stream)
  • 是文件、服务还是用户?
  • 是“迁移到新机器”还是“重装后恢复”?

我可以直接给你可执行的一步步命令。

0 踩