更改用户名

我在安装时用户名弄错了。所以我通过创建一个具有SUDO权限的访客帐户,在登录后更改了用户的名称。但是当我使用ls /home命令检查用户列表时,我没有看到新的用户名,而是出现了旧的用户名。但是我使用新的用户名进行登录。
这是不是意味着我需要单独在Home目录中更改名称?还有,是否还需要进行其他更改?

重复问题,请参考以下链接:https://askubuntu.com/questions/34074/how-do-i-change-my-username/317008 和 https://unix.stackexchange.com/questions/98461/proper-way-of-changing-username-in-ubuntu-or-any-linux - sondra.kinsey
4个回答

在Ubuntu中更改或重命名用户名的步骤:
如果以要修改的用户身份运行,请首先注销,然后打开控制台:按Ctrl+Alt+F1 否则,只需打开新的终端:按Ctrl+Alt+T 然后运行以下命令:
exec sudo -i
killall -u [oldname]
id [oldname]
usermod -l [newname] [oldname]
groupmod -n [newname] [oldname]
usermod -d /home/[newname] -m [newname]
usermod -c "[full name (new)]" [newname]
id [newname]

例子:

sudo -i
killall -u belaje
id belaje
uid=1000(belaje) gid=1000(belaje) groups=1000(belaje),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),109(lpadmin),127(sambashare)
usermod -l  balaja belaje
groupmod -n balaja belaje
usermod -d /home/balaja -m  balaja
usermod -c "Bala Jagannathan" balaja
id balaja

每当你想从控制台版本切换回图形界面时:

按下Ctrl+Alt+F7


2使用这个步骤,我成功地修改了用户账户,但是只能通过另一个账户(为此目的创建并后来删除)进行操作。我想知道是否是这种情况(实际上没有提到),还是我做错了什么? 主要问题是,“killall -u oldname”让我退出登录,导致我无法继续进行后续步骤。 - baltasvejas
3这可能最好通过TTY完成,而不是在GUI中使用终端仿真器。因此,我会将终端仿真器的键盘快捷方式替换为TTY1的快捷方式,即Ctrl + Alt + F1。 - Sergiy Kolodyazhnyy
2请添加一句话,如果用户有加密的主目录,还需要编辑/home/newname/.ecryptfs/Private.mnt文件,将其指向新的主目录。 - Shaun Dychko
不太适用于我。在这样做之后,用户界面就无法正常工作了。登录后只显示桌面壁纸。 - Johannes
2我成功地通过更改/etc/passwd/etc/shadow中的用户名来替代使用killallusermod(我不想通过SSH连接与已登录用户进行操作)。 - krlmlr
正如baltascejas所指出的那样:在以要编辑的用户登录的身份下按下Ctrl-Alt-T只会在您运行killall -u oldname时终止您的会话。 - virtualxtc
这行代码:usermod -d /home/newname -m newname 应该改为:usermod -d /home/oldname -m newname(注意从旧名称改为新名称)。 - BenKoshy
1@BKSpurgeon 不对。在重命名账户后,新的登录使用的是 /home/oldname 文件夹。你需要指定新的文件夹名称和所属用户,因此两次都使用 newname。https://linux.die.net/man/8/usermod - bitsoflogic
为什么要执行?真的有必要吗? - Johannes Lemonde
在 WSL 中,killall 命令无效,因为在执行 killall 后不久又会启动一个新进程。所以我运行了以下命令:killall -u [oldname] && usermod -l [newname] [oldname] - fishbone

在服务器上,这对我起作用:
sudo usermod -md /home/NewHome -l NewName OldName
sudo groupmod -n NewGroupName OldGroupName

这将重命名用户及其组,以及主文件夹。


这个方法是可行的,但是很多应用程序会出问题,因为它们专门调用/home/oldusername;许多软件作者在调用配置文件时不使用变量,而是直接指定旧用户名而不是$HOME。Chrome、GTK和Firefox就是这样出问题的。别忘了你的密钥环也会保存旧的凭据...我不确定如何备份它们...也许可以导出它们?
所以,我最终采取以下步骤来更改用户名 - 真希望我知道有更简单的方法。
  • 作为olduser,登录Chrome和Firefox以同步设置。
  • 在设置中使用用户和组,创建用户killmenow,密码与之相同,并将其设为管理员,重新启动并以killmenow身份登录。
  • 打开终端,运行sudo i,然后mkdir /home/newusername,并将其uid:gid设置为与oldusername相同。
  • /home/oldusername/中的用户创建的文件夹(如usercreatedfiles.xyz、Desktop、Downloads等)以及包含创建的文件(如文档、图片、音乐、电影等)的其他文件夹移动到/home/newusername
  • 查找具有特定设置的任何特定应用程序... 注意:如果丢失用户的文件,用户可能会用电话簿打你的头 ;)
  • 使用vi /etc/passwd/etc/group参考newusername/home/newusername
  • 运行passwd newusername并输入临时密码两次 重新启动并以newusername身份登录,密码为前一步中输入的密码。
  • 在设置中使用"用户和组"删除killmenow
等一段时间后再删除/home/oldusername - 以防你错过了重要的东西... 或者将其移动到/home/newusername/Downloads 并告诉他们。
mv /home/oldusername /home/newusername/Downloads/oldusername-backup

请尝试以下步骤来更改主目录中的用户名:
usermod -d /home/newHomeDir -m newUsername

希望这能帮到你!

尝试了上述方法,但没有成功... 这是我得到的结果。 - Bala Jagannathan S
1完成上述操作后,请注销您的计算机,然后尝试重新登录。 - vembutech