【Linux】解决Linux多机环境UID/GID不一致导致的备份权限问题
前言
服务器中有一台备份机器,搭建的时候,因为没有考虑用户uid的问题,导致从主机器拷贝过来的文件,没有权限使用。
问题分析
- 主机(host-primary)
- 用户
crh
:UID=1002
,GID=1002
- 用户
itsupport
:UID=1000
,GID=1000
- 用户
- 备机(host-backup)
- 用户
crh
:UID=1000
- 用户
itsupport
:UID=1002
- 用户
解决方案
步骤1:停止用户进程
避免权限修改过程中文件被占用:
终止所有属于crh和itsupport的进程
sudo pkill -9 -u crh
sudo pkill -9 -u itsupport
步骤2:备份关键文件
防止误操作导致系统配置损坏:
# 备份用户配置文件
sudo cp /etc/passwd /etc/passwd.bak
sudo cp /etc/group /etc/group.bak
sudo cp /etc/shadow /etc/shadow.bak
# 备份用户家目录(可选)
sudo tar -czvf /backup/home_backup.tar.gz /home/crh /home/itsupport
步骤3:交换UID/GID
通过临时UID过渡,避免直接修改导致冲突:
- 修改
itsupport
的UID/GID为临时值
sudo usermod -u 1003 itsupport # 修改UID
sudo groupmod -g 1003 itsupport # 修改GID
- 修改
crh
的UID/GID为目标值
sudo usermod -u 1002 crh # UID从1000改为1002
sudo groupmod -g 1002 crh # GID从1000改为1002
- 修改
itsupport
的UID/GID为最终值
sudo usermod -u 1000 itsupport # UID从1003改为1000(原主机itsupport的UID)
sudo groupmod -g 1000 itsupport # GID从1003改为1000
步骤4:修复文件权限
递归更新文件属主和属组:
# 修复原UID=1000(crh)的文件归属到UID=1002
sudo find / -user 1000 -exec chown -h 1002 {} \;
# 修复临时UID=1003(itsupport)的文件归属到UID=1000
sudo find / -user 1003 -exec chown -h 1000 {} \;
# 修复组权限(同理)
sudo find / -group 1000 -exec chgrp 1002 {} \;
sudo find / -group 1003 -exec chgrp 1000 {} \;
步骤5:验证结果
-
检查用户信息
id crh # 应显示 uid=1002, gid=1002 id itsupport # 应显示 uid=1000, gid=1000
-
验证Home目录权限
ls -ld /home/crh # 应显示属主为crh(UID=1002),权限为drwx------
本文来自:【Linux】解决Linux多机环境UID/GID不一致导致的备份权限问题-小码农,转载请保留本条链接,感谢!
温馨提示:
本文最后更新于 2025年03月11日,已超过 3 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我。
正文到此结束
- 本文标签: issue linux gid
- 本文链接: https://djc8.cn/archives/linux-solve-backup-permissions-problems-caused-by-inconsistent-uidgid-in-linux-multimachine-environments.html
- 版权声明: 本文由小码农原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权