如何安全地重命名用户?
我在安装Ubuntu时拼错了用户名,如果可能的话想重命名。 如何安全地更改用户名?
安全? 不要重命名。 相反,(确保用户首先注销)使用正确的用户名创建新用户,将旧主目录重命名为新用户名,然后将文件夹重命名为新用户。
这假设您没有使用加密的家庭。 这需要一些不同的步骤,但由于我自己没有这样做,我会把它留给其他人。
像这样使用usermod
:
usermod -l newname currentname
我最近面临这样的问题,并得到了解决方案。
-
备份用户和组相关文件
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
-
我们需要在恢复模式下启动(单击Shift on boot,在GRUB中选择Ubuntu的高级选项 ,选择Ubuntu,使用Linux …(恢复模式) )
- 选择
root Drop to root shell prompt
以访问root-shell -
当被问到时,请在此输入您的主要用户(通常是GID = 1000,sudo组成员)密码
Press Enter for maintenance (or press Control-D to continue):
-
使用读写方式重新安装所有文件系统
mount -o rw,remount / mount -o rw,remount /home
-
将用户从old_user重命名为new_user ,重命名用户名注释(
/etc/passwd
字段5)并移动其主页OLDNAME="old_user" NEWNAME="new_user" usermod -l $NEWNAME $OLDNAME -c $NEWNAME -d /home/$NEWNAME -m
-
将用户的组从old_user重命名为new_user
groupmod $OLDNAME -n $NEWNAME
-
将old_user替换为
/etc/subgid
和/etc/subuid
sed -i "s/$OLDNAME/$NEWNAME/g" /etc/subuid sed -i "s/$OLDNAME/$NEWNAME/g" /etc/subgid
-
重新启动系统,然后使用new_user名称和旧密码登录。 (可选)使用
passwd
更改密码 -
如果正确 – 删除备份文件:
sudo rm ~/passwd.bak ~/group.bak ~/subuid.bak ~/subgid.bak \ ~/gshadow.bak ~/shadow.bak
注意:您可以在其手册页上阅读usermod
和groupmod
使用选项。