Linux用户账号密码迁移方法 - 技术文档

  1. 门户首页
  2. 技术文档

Linux用户账号密码迁移方法

    近日公司的web服务器需要迁移,而系统上用的FTP软件是Proftpd,用户账号密码没有使用Mysql来管理,而是使用/etc/passwd、/etc/group、/etc/shadow来做身份认证的,迁移用户帐号不是一件容易的任务。需要确保文件所有权保持完整,密码和所属组保持原样。在Linux上加入系统的用户的UID和GID总是从500开始计算,一直增加,除非被覆盖,这样迁移用户帐号,就是把UID>=500的用户帐号导入到系统中。为了让这个过程能工作正常,新安装的Linux系统上不要创建新的用户帐号。下面的过程包括获取用户帐号,把他们添加到恰当文件的已经存在的帐号后面。这个过程只在安装后有效,建议在添加用户帐号之前,备份要修改的文件。

awk -F: ' ($3>=500) && ($3!=65534) ' /etc/passwd > passwd.txt		#导出账号
 
awk -F: ' ($3>=500) && ($3!=65534) ' /etc/group > group.txt			#导出用户组
 
awk -F: ' ($3>=500) && ($3!=65534) {print $1}' /etc/passwd|tee -|egrep -f - /etc/shadow > shadow.txt	#导出密码

然后拷贝passwd.txt、group.txt、shadow.txt三个文件到新系统上,比如root目录下,以防万一,最好把新系统上的这三个文件也备份一下。

cp /etc/passwd /bakup/passwd-bakup.txt   #备份账号
cp /etc/group /bakup/group-bakup.txt     #备份用户组
cp /etc/shadow /bakup/shadow-bakup.txt   #备份密码

然后把拷贝过来的三个文件与新系统进行合并

cat /root/passwd.txt >> /etc/passwd    #合并账号
cat /root/group.txt >> /etc/group      #合并用户组
cat /root/shadow.txt >> /etc/shadow    #合并密码

合并完成以后重启一下系统,测试了一下FTP账号,都能正常登录。