如何安全地重命名用户?

如何安全地重命名用户?

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

答案1

安全吗?根本不要重命名。相反,(确保用户先注销)使用正确的用户名创建一个新用户,将旧主目录重命名为新用户名,然后使用 chown -R 将文件夹分配给新用户。

这假设您没有使用加密主页。这需要一些不同的步骤,但由于我自己没有这样做过,所以我将这件事留给别人去做。

答案2

使用usermod方式如下:

usermod -l newname currentname

答案3

我最近遇到了这样的问题并得到了可行的解决方案。

  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启动,在 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. 重命名用户 旧用户新用户,将对用户名的评论重命名(中的字段 5 /etc/passwd)并将其移至主目录

    OLDNAME="old_user"
    NEWNAME="new_user"
    usermod -l $NEWNAME $OLDNAME -c $NEWNAME -d /home/$NEWNAME  -m
    
  7. 重命名用户组旧用户新用户

    groupmod $OLDNAME -n $NEWNAME
    
  8. 代替旧用户新用户/etc/subgid/etc/subuid

    sed -i "s/$OLDNAME/$NEWNAME/g" /etc/subuid
    sed -i "s/$OLDNAME/$NEWNAME/g" /etc/subgid
    
  9. 重新启动系统,然后使用新用户名称和旧密码。可选择使用以下方式更改密码passwd

  10. 如果一切顺利——删除备份文件:

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

注意:您可以在其手册页上阅读有关使用的选项的usermod信息。groupmod

相关内容