原创

【Linux】解决Linux多机环境UID/GID不一致导致的备份权限问题

前言

服务器中有一台备份机器,搭建的时候,因为没有考虑用户uid的问题,导致从主机器拷贝过来的文件,没有权限使用。

问题分析

  • 主机(host-primary)
    • 用户crhUID=1002GID=1002
    • 用户itsupportUID=1000GID=1000
  • 备机(host-backup)
    • 用户crhUID=1000
    • 用户itsupportUID=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过渡,避免直接修改导致冲突:

  1. 修改itsupport的UID/GID为临时值
sudo usermod -u 1003 itsupport          # 修改UID
sudo groupmod -g 1003 itsupport        # 修改GID
  1. 修改crh的UID/GID为目标值
sudo usermod -u 1002 crh               # UID从1000改为1002  
sudo groupmod -g 1002 crh              # GID从1000改为1002
  1. 修改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:验证结果

  1. 检查用户信息

    id crh        # 应显示 uid=1002, gid=1002
    id itsupport  # 应显示 uid=1000, gid=1000
    
  2. 验证Home目录权限

ls -ld /home/crh  # 应显示属主为crh(UID=1002),权限为drwx------

本文来自:【Linux】解决Linux多机环境UID/GID不一致导致的备份权限问题-小码农,转载请保留本条链接,感谢!

温馨提示:
本文最后更新于 2025年03月11日,已超过 3 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我
正文到此结束
本文目录