如何安全地重命名用户?

我在安装Ubuntu时拼错了用户名,如果可能的话想重命名。 如何安全地更改用户名?

安全? 不要重命名。 相反,(确保用户首先注销)使用正确的用户名创建新用户,将旧主目录重命名为新用户名,然后将文件夹重命名为新用户。

这假设您没有使用加密的家庭。 这需要一些不同的步骤,但由于我自己没有这样做,我会把它留给其他人。

像这样使用usermod

 usermod -l newname currentname 

我最近面临这样的问题,并得到了解决方案。

  1. 备份用户和组相关文件

     sudo cp /etc/passwd ~/passwd.bak sudo cp /etc/group ~/group.bak sudo cp /etc/subuid ~/subuid.bak sudo cp /etc/subgid ~/subgid.bak sudo cp /etc/gshadow ~/gshadow.bak sudo cp /etc/shadow ~/shadow.bak 
  2. 我们需要在恢复模式下启动(单击Shift on boot,在GRUB中选择Ubuntu的高级选项 ,选择Ubuntu,使用Linux …(恢复模式)

  3. 选择root Drop to root shell prompt以访问root-shell
  4. 当被问到时,请在此输入您的主要用户(通常是GID = 1000,sudo组成员)密码

     Press Enter for maintenance (or press Control-D to continue): 
  5. 使用读写方式重新安装所有文件系统

     mount -o rw,remount / mount -o rw,remount /home 
  6. 将用户从old_user重命名为new_user ,重命名用户名注释( /etc/passwd字段5)并移动其主页

     OLDNAME="old_user" NEWNAME="new_user" usermod -l $NEWNAME $OLDNAME -c $NEWNAME -d /home/$NEWNAME -m 
  7. 将用户的组从old_user重命名为new_user

     groupmod $OLDNAME -n $NEWNAME 
  8. old_user替换为/etc/subgid/etc/subuid

     sed -i "s/$OLDNAME/$NEWNAME/g" /etc/subuid sed -i "s/$OLDNAME/$NEWNAME/g" /etc/subgid 
  9. 重新启动系统,然后使用new_user名称和旧密码登录。 (可选)使用passwd更改密码

  10. 如果正确 – 删除备份文件:

     sudo rm ~/passwd.bak ~/group.bak ~/subuid.bak ~/subgid.bak \ ~/gshadow.bak ~/shadow.bak 

注意:您可以在其手册页上阅读usermodgroupmod使用选项。