如何在不丢失应用程序设置的情况下更改此名称(包括主目录名称和终端名称)?
如何保留权限和我的密钥以进行各种身份验证(例如电子邮件,SSH,GPG等)?
如果更改用户名,可能会丢失哪些设置?
#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之后,您获得用户
– 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
评论
为什么我们不能导航到/usr/share/applications/users.desktop >>单击必须更改名称的用户。 >>单击更改用户名>>更改名称>>单击确定。我认为,这将是更改用户名的最简单方法,不是吗?