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账号,都能正常登录。