Linux 作为我们实际中最常用的服务系统,虽然其相对 windows 更加可靠稳定与高效!但是在运行过程中,难免出现一些意想不到的情况。例如服务器奔溃,内存空间不足,性能过低,损坏等。那么此时我们就需要将服务器,进行迁移!但是,我们又不能将服务器内保存的账户信息完造成破坏!那么对于系统保存的账户信息该如何进行迁移呢?这就好比数据库信息的备份转储一样。好了,说了一大堆下面我们来看操作。
在此之前,我们有必要先来了解一下 linux 系统用户信息会被用到的几个目录及文件位置。
/home: 所有用户数据都被保存在这个家目录下。
/var/spool/mail: 保存了用户的 Email 信息。
/etc/passwd: 保存着所有用户的账户信息。
/etc/shadow: 保存着所有账户的加密密码信息。
/etc/gshadow: 保存所有组的加密密码信息。
/etc/group:定义用户所属组信息。
在简单了解了以上信息后,下面我们就可以开始进行系统账户的迁移工作了!
首先我们创建一个名为 old 的目录:
mkdir /root/old/
设置 UID 过滤限制条件:
注:RHEL/CentOS/Fedora : 默认为500,最大为65534
Debian 和 Ubuntu Linux : 默认为1000,最大为29999
export UGIDLIMIT=500
现在我们通过 awk 命令,通过过滤 UID 的方式。将 /etc/passwd 下的账户信息拷贝到 /root/old/passwd.mov
$ awk -v LIMIT=$UGIDLIMIT -F: '($3>=LIMIT) && ($3!=65534)' /etc/passwd > /root/old/passwd.mov
接着我们拷贝 /etc/group 文件:
awk -v LIMIT=$UGIDLIMIT -F: '($3>=LIMIT) && ($3!=65534)' /etc/group > /root/old/group.mov
拷贝 /etc/shadow 下的文件:
awk -v LIMIT=$UGIDLIMIT -F: '($3>=LIMIT) && ($3!=65534) {print $1}' /etc/passwd | tee - |egrep -f - /etc/shadow > /root/old/shadow.mov
拷贝 /etc/gshadow 下的文件:
cp /etc/gshadow /root/old/gshadow.mov
备份 /home 和 /var/spool/mail 目录:
tar -zcvpf /root/old/home.tar.gz /home tar -zcvpf /root/old/mail.tar.gz /var/spool/mai
下面我们就可以通过 USB 或者 SCP 命令,将我们生成的 /root/old 文件拷贝到新的 linux 系统上了:
scp -r /root/old/* user@www.secist.com:/path/to/location
在接下来的操作之前,首先最重要的当然是备份我们当前的账户信息:
mkdir /root/newuser.bac
cp /etc/passwd /etc/shadow /etc/group /etc/gshadow /root/newuser.bac
现在,我们就可以覆盖我们的账户信息啦!
cd /path/to/location cat passwd.mov >> /etc/passwd cat group.mov >> /etc/group cat shadow.mov >> /etc/shadow /bin/cp gshadow.mov /etc/gshadow
接着我们复制提取 home.tar.gz 到新的 Server /home 下:
cd / tar -zxvf /path/to/location/home.tar.gz
我们再提取 mail.tar.gz 到新的 Server /var/spool/mail 下:
cd / tar -zxvf /path/to/location/mail.tar.gz
最后我们只要重启系统,你会发现我们可以使用之前的账户登录及操作啦!
reboot
转载请注明:即刻安全 » Linux账户如何完整迁移至其它Server?