前一段时间,当我安装Ubuntu时,我为我的帐户选择了一个非常愚蠢的用户名,我不想再使用它了。

如何在不丢失应用程序设置的情况下更改此名称(包括主目录名称和终端名称)?
如何保留权限和我的密钥以进行各种身份验证(例如电子邮件,SSH,GPG等)?
如果更改用户名,可能会丢失哪些设置?

评论

为什么我们不能导航到/usr/share/applications/users.desktop >>单击必须更改名称的用户。 >>单击更改用户名>>更改名称>>单击确定。我认为,这将是更改用户名的最简单方法,不是吗?

#1 楼

类似于Unix的操作系统将用户名与用户身份分离,因此您可以安全地更改名称而不影响ID。所有权限,文件等都与您的身份(uid)绑定,而不与您的用户名绑定。

要管理用户数据库的各个方面,请使用usermod工具。

要更改用户名(最好不登录即可执行此操作):

sudo usermod -l newUsername oldUsername


但是,这不会重命名主文件夹。

要更改主文件夹,请在更改用户名后使用

sudo usermod -d /home/newHomeDir -m newUsername




例如可以注销,拖放到控制台(Ctrl + Alt + F1),然后sudo su -成为真正的根目录(而不是sudo -s,其中$ HOME仍然是/ home / yourname。)也许您还必须从中杀死一些仍在运行的进程用户至上。为此,输入ps -u username,查找匹配的PID并通过kill PID-number将其杀死。

更新:如前所述,某些文件可能引用了您的旧主目录。您可以保留符号链接以实现向后兼容性,例如ln -s /home/newname /home/oldname,也可以使用sed -i.bak 's/*oldname*/*newname*/g' *list of files*更改文件内容。它为每个扩展名为.bak的文件创建一个备份。像我一样:
由于我只有一个用户帐户(管理员),所以它不会让我更改用户名(“您已经登录”是TTY1中的响应(Ctrl + Alt + F1)。此:




使用旧凭据登录并添加新用户,例如在TTY1中添加“临时”用户:

sudo adduser temporary

< br设置密码。


通过将临时用户添加到sudo组,允许临时用户运行sudo:

sudo adduser temporary sudo


使用命令exit注销。
返回到tty1:使用“临时”用户帐户和密码登录。如上所述更改用户名和文件夹。exit(直到出现登录提示)
返回TTY7(Ctrl + Alt + F7)在GUI /普通桌面屏幕上登录,看看是否可行。

删除临时用户和文件夹:

sudo deluser temporary
sudo rm -r /home/temporary




评论


不幸的是,对于$ HOME下的不同配置文件,这不是正确的,尝试运行grep -IRFl / home / username〜之类的东西,您将看到其中存储了对主目录的引用。

–安排
2011年4月8日在9:17

对于具有加密主文件夹的用户,您必须编辑/home/.ecryptfs/oldusername/.ecryptfs/Private.mnt指向您的新主文件夹,否则您将无法通过Unity登录。

–拉斐尔
16年1月22日在21:57

sudo usermod -d / home / edge -m edge产生:usermod:目录/ home / empedokles无法在/ home / edge中重命名,即第4步不起作用。

–empedokles
16-10-13在10:50



@JTC永远不会用纯nano编辑sudoers。始终使用visudo。

–发泡胶飞
18年1月4日在11:09

您还需要更改组:sudo groupmod -n新名称当前名称

–亚历山德罗
18-10-9在9:43

#2 楼

放在一起:


在开始屏幕上,按Ctrl + Alt + F1。
使用您的用户名和密码登录。

设置“ root”帐户的密码。

sudo passwd root



注销。

exit


使用先前设置的“ root”帐户和密码登录。

将用户名和主文件夹更改为所需的新名称。

usermod -l <newname> -d /home/<newname> -m <oldname>



将组名更改为所需的新名称。

groupmod -n <newgroup> <oldgroup>



锁定“ root”帐户。

passwd -l root


如果您使用的是ecryptfs(加密的主目录)。使用ecryptfs-recover-private挂载加密的目录并编辑<mountpoint>/.ecryptfs/Private.mnt以反映新的主目录。

注销。

exit


按Ctrl + Alt + F7 。

现在您可以使用新用户名登录了。

评论


如果在usermod -l之后,您获得用户当前被进程使用,则可以使用ps aux |来找到该进程(可能是守护程序,或tmux / screen)。 grep <进程号>。您可能想要优雅地停止该进程,否则可以杀死

– RedPixel
2015年9月30日在8:46



多谢您提出意见。这非常有用。可能会提到两件事。在第4步之后,我重新启动,因此在第6步中不会出现错误消息。此外,在此过程完成之后,/ etc / passwd文件将具有与旧用户名匹配的ID注释。这将使登录屏幕显示旧的登录名。我找不到从命令行修复它的体面方法,但是我通过登录用户帐户,转到帐户设置并将“登录名”更改为用户名来修复了它。这样就更新了/ etc / passwd文件并解决了该问题。

–臂架
16-3-28在17:17

这是最简单,最简单的方法。最好在第4步后按照@Jibbers的建议重新启动。

–耶克
16年4月8日在5:45

我曾经提到“文件浏览器窗口中的书签”现在指向旧文件夹,因此我必须删除这些书签。

–ollydbg23
16年4月4日在8:47

如果通过SSH执行此操作,则需要暂时​​在SSHD配置中启用root登录。将sudo nano / etc / ssh / sshd_config取消注释PermitRootLigin并将其值更改为yes。重新启动SSH sudo systemctl重新启动sshd。使用root修改用户后,将所有内容恢复为原来的样子,即锁定root帐户并禁用远程root登录。

– TimD
20 Mar 9 '20 at 6:47

#3 楼

在恢复模式下重新启动,然后转到root提示符shell(“拖放到root shell提示符”)。

首先重新安装root

mount -o remount,rw /


到更改用户名和主文件夹名称,

usermod -l <newname> -d /home/<newname> -m <oldname>


组名称,

groupmod -n <newgroup> <oldgroup>


评论


当我使用usermod -l <​​新名称> -d / home / <新名称> -m <旧名称>时,出现错误usermod:用户oldusername当前由进程3170使用,如果我杀死该进程,它仍然会给出相同的错误。使用Ubuntu 13.10

–瓦卡斯
13年11月24日13:48



如果您的家庭目录已被加密,请勿这样做!!!我遵循了此过程,这让我花了2个小时的漫漫跋涉……恢复的唯一方法是再次执行此过程,然后将原始(不喜欢的)名称放回去。点”

–迈克
16-10-28在12:21



为什么我们不能导航到/usr/share/applications/users.desktop >>单击必须更改名称的用户。 >>单击更改用户名>>更改名称>>单击确定。我认为,这将是更改用户名的最简单方法,不是吗?

– Anand
19年7月22日在10:46

#4 楼

在Ubuntu 13.10、14.04、16.04:


单击“系统设置”图标。
单击“用户帐户”。
应显示您的管理员帐户。
单击“解锁”按钮。
根据要求输入用户密码以允许更改帐户。
解锁后,您可以单击要更改的旧用户名。并输入新用户名来替换它。
输入新用户名后,单击“锁定”按钮以使更改永久生效。
重新启动Ubuntu。


评论


这并没有更改我的用户名,只是名称。旧的用户名仍然显示在终端中,并作为主目录和组(即使在重新启动后)。

–DougC
18年3月7日在19:30



#5 楼

收到usermod: can't change /etc/password时,只需运行以下命令:

在根恢复控制台中运行:

mount -o remount,rw /


然后重新运行:

usermod -l <newname> -d /home/<newname> -m <oldname>


评论


为什么我们不能导航到/usr/share/applications/users.desktop >>单击必须更改名称的用户。 >>单击更改用户名>>更改名称>>单击确定。我认为,这将是更改用户名的最简单方法,不是吗?

– Anand
19年7月22日在10:46

#6 楼

@ karthick87在这里列出的答案可以很好地工作,但是为了安全起见,这是我会做的事情,避免出现所有故障:


创建一个单独的帐户/用户并确保该帐户/用户root功能或以任何具有root用户权限的用户身份登录。
注销当前帐户,然后使用步骤1中提到的帐户登录。
杀死前一个用户的所有进程。
现在请遵循@ karthick87提到的步骤并更改用户名和主目录所有者。
然后按照@Sriraj Hebbar的回答更改组名。
以备用用户身份注销并以您的用户身份登录。如果您创建了一个额外的用户,请将其删除。


#7 楼

当您执行usermod -l <newname> -d /home/<newname> -m <oldname>时,会得到
useradd: can't change /etc/passwd错误消息,以避免这种情况,只需将sudo --添加到上述命令中,例如

sudo -- usermod -l <newname> -d /home/<newname> -m <oldname>




sudo --  groupmod -n <newgroup> <oldgroup>


#8 楼

由于并非所有PC都有usermod应用程序,因此您可以手动进行操作。从root开始,打开/etc/passwd进行编辑:

sudo vim /etc/passwd


,并在行首更改用户名:

user:x:500:501:username:home/user:/bin/bash


到:

newuser:x:500:501:username:home/user:/bin/bash


然后,如果您是root用户,则只需登录,并且已经登录到user,注销并重新登录。

评论


我尝试过这种方式(在我发现usermod命令之前),并且不再接受用户密码。

– Ben Voigt
16年5月11日在17:51

@BenVoigt并非所有的PC都有usermod

–МалъСкрылевъ
16年5月11日在18:25

这是Ubuntu!如果没有usermod,则安装会被破坏,因为它是passwd软件包的一部分,这是必需的。

–澳大利亚
17 Mar 6 '17 at 14:10