将用户帐户从旧Linux服务器移动或迁移到新Linux服务器

时间:2020-01-09 10:40:32  来源:igfitidea点击:

如何将用户帐户从旧Linux服务器移动或迁移到包括邮件的新Cent OS Linux服务器?
此新系统全新安装。

您可以使用tar,awk,scp等标准命令将用户从旧的Linux服务器迁移到新的Linux服务器。
如果您使用的是旧版Linux发行版,例如Redhat 9或Debian 2.x,这也很有用。

传统Linux用户管理需要以下文件/目录:

  • /etc/passwd包含每个用户帐户的各种信息。
  • /etc/shadow包含用户帐户的加密密码信息和可选的密码有效期信息。
  • /etc/group定义用户所属的组
  • /etc/gshadow组影子文件(包含组的加密密码)
  • /var/spool/mail通常,用户电子邮件存储在这里。
  • /home所有用户数据存储在这里。

警告:以下信息需要对Linux概念有很好的理解。
作者不承担任何赔偿责任。

您需要将上述所有文件和目录从旧服务器备份到新Linux服务器。

在旧Linux系统上执行的命令

首先创建一个旧用途的tar包(旧Linux系统)。
创建目录:

# mkdir /root/move/

设置UID过滤器限制:

# export UGIDLIMIT=500

现在使用awk将/etc/passwd帐户复制到/root/move/passwd.mig,以过滤掉系统帐户(即仅复制用户帐户)

# awk -v LIMIT=$UGIDLIMIT -F: '(>=LIMIT) && (!=65534)' /etc/passwd > /root/move/passwd.mig

复制/etc/group文件:

# awk -v LIMIT=$UGIDLIMIT -F: '(>=LIMIT) && (!=65534)' /etc/group > /root/move/group.mig

复制/etc/shadow文件:

# awk -v LIMIT=$UGIDLIMIT -F: '(>=LIMIT) && (!=65534) {print }' /etc/passwd | tee - |egrep -f - /etc/shadow > /root/move/shadow.mig

复制/etc/gshadow(很少使用):

# cp /etc/gshadow /root/move/gshadow.mig

备份/home和/var/spool/mail目录:

# tar -zcvpf /root/move/home.tar.gz /home
# tar -zcvpf /root/move/mail.tar.gz /var/spool/mail

其中:

  • 添加到Linux系统的用户始终以Linux发行版指定或由admin设置的UID和GID值开头。根据不同的Linux发行版的限制:
  • " RHEL/CentOS/Fedora Core":默认为500,上限为65534(/etc/libuser.conf)。
  • Debian和Ubuntu Linux:默认为1000,上限为29999(/etc/adduser.conf)。
  • 永远不要在新安装的Cent OS Linux上创建任何新的系统用户帐户。因此,以上awk命令根据Linux发行版过滤掉了UID。
  • export UGIDLIMIT = 500为普通用户帐户设置UID开始限制。根据您的Linux发行版设置此值。
  • awk -v LIMIT = $UGIDLIMIT -F:($3> = LIMIT)&&($3!= 65534)/etc/passwd>/root/move/passwd.mig您需要使用-v选项将UGIDLIMIT变量传递给awk (它将shell程序变量UGIDLIMIT的值分配给awk程序变量LIMIT)。选项-F:将字段分隔符设置为:。最后,awk从/etc/passwd中读取每一行,过滤掉系统帐户并生成新文件/root/move/passwd.mig。相同的逻辑适用于awk命令的其余部分。
  • tar -zcvpf /root/move/home.tar.gz/home备份用户/home目录
  • tar -zcvpf /root/move/mail.tar.gz/var/spool/mail`备份用户邮件目录

使用scp或U盘或磁带将/root/move复制到新的Linux系统。

# scp -r /root/move/* [email protected]:/path/to/location

在新的Linux系统上执行的命令

首先,备份当前用户和密码:

# mkdir /root/newsusers.bak
# cp /etc/passwd /etc/shadow /etc/group /etc/gshadow /root/newsusers.bak

现在在/etc /中还原passwd和其他文件

# cd /path/to/location
# cat passwd.mig >> /etc/passwd
# cat group.mig >> /etc/group
# cat shadow.mig >> /etc/shadow
# /bin/cp gshadow.mig /etc/gshadow

请注意,您必须使用>>(追加),而不是>(创建)shell重定向。

现在将home.tar.gz复制并解压缩到新服务器/home

# cd /
# tar -zxvf /path/to/location/home.tar.gz

现在将mail.tar.gz(邮件)复制并解压缩到新服务器/var/spool/mail

# cd /
# tar -zxvf /path/to/location/mail.tar.gz

现在重启系统;当Linux恢复运行时,您的用户帐户将像以前一样在旧系统上工作:

# reboot