问题描述
前一段时间,当我安装Ubuntu时,我为我的账户选择了一个相当愚蠢的用户名,我不想再使用它了。
如何在不丢失应用程序设置的情况下更改此项(包括我的主目录的名称和终端中的名称)?我如何保留许可和密钥以进行各种认证(例如电子邮件,SSH,GPG等)?如果我更改了用户名,可能会丢失什么设置?
最佳解决思路
Unix-like操作系统将用户名与用户身份解耦,因此您可以安全地更改名称而不影响ID。所有权限,文件等都与您的身份(uid)绑定,而不是您的用户名。
要管理用户数据库的每个方面,请使用usermod
工具。
要更改用户名(可能最好不要登录):
sudo usermod -l newUsername oldUsername
但是,这不会重命名主文件夹。
要更改home-folder,请使用
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中的”temporary”:
sudo adduser temporary
设置密码。
-
允许临时用户通过将用户添加到sudo组来运行sudo:
sudo adduser temporary sudo
-
用命令
exit
注销。 -
返回到tty1:使用’temporary’用户帐户和密码登录。如上所述更改您的用户名和文件夹。
exit
(直到您获得登录提示) -
回到TTY7(
Ctrl
+Alt
+F7
),在GUI /普通桌面屏幕上登录,看看是否能正常工作。 -
删除临时用户和文件夹:
sudo deluser temporary sudo rm -r /home/temporary
次佳解决思路
把它放在一起:
-
在开始屏幕处按
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
。
现在,您可以使用新的用户名登录。
第三种解决思路
重启进入恢复模式并转到根提示shell(“Drop to root shell prompt”)
首先重新装根
mount -o remount,rw /
要更改用户名和主文件夹名称,
usermod -l <newname> -d /home/<newname> -m <oldname>
对于组名,
groupmod -n <newgroup> <oldgroup>
第四种思路
(使用Ubuntu 13.10,14.04,16.04)点击”System Settings”图标。然后点击”User Accounts”。应显示您的管理员帐户。点击”Unlock”按钮。按要求输入您的用户密码,以允许更改您的帐户。一旦解锁,您可以点击您想要更改的旧用户名,然后输入新的用户名来替换它。当您输入新名称时,点击”Lock”按钮以使更改永久。重新启动Ubuntu。
第五种思路
在收到usermod: can't change /etc/password
时,只需运行以下命令:
在根恢复控制台中运行:
mount -o remount,rw /
然后重新运行:
usermod -l <newname> -d /home/<newname> -m <oldname>