如何更改用户名?
前段时间我安装Ubuntu后,我为我的帐户选择了一个相当愚蠢的用户名,我不想再使用了。
如何在不丢失应用程序设置的情况下更改此设置(包括主目录的名称和终端中的名称)?
如何保留各种身份validation的权限和密钥(例如电子邮件,SSH,GPG等)?
如果我更改了用户名,可能会丢失哪些设置?
类Unix操作系统将用户名与用户身份分离,因此您可以安全地更改名称而不影响ID。 所有权限,文件等都与您的身份(uid)相关联,而不是您的用户名。
要管理用户数据库的各个方面,请使用usermod
工具。
要更改用户名(最好在不登录的情况下执行此操作):
sudo usermod -l newUsername oldUsername
但是,这不会重命名主文件夹。
要更改主文件夹,请使用
sudo usermod -d /home/newHomeDir -m newUsername
更改用户名后。
例如,你可以注销,掉到控制台( Ctrl + Alt + F1 )和sudo su -
成为真正的root(而不是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*
更改文件内容sed -i.bak 's/*oldname*/*newname*/g' *list of files*
它为每个扩展名为.bak的文件创建备份。
对于像我这样经验不足的用户的一些其他信息:
由于我只有一个用户帐户(管理员),它不会让我更改用户名(“你已经登录”是TTY1中的响应( Ctrl + Alt + F1 )。要解决这个问题:
-
使用旧凭据登录并添加新用户,例如TTY1中的“临时”:
sudo adduser temporary
设置密码。
-
允许临时用户通过将用户添加到sudo组来运行sudo:
sudo adduser temporary sudo
- 使用命令
exit
。 - 返回tty1:使用“临时”用户帐户和密码登录。 如上所述更改您的用户名和文件夹。
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
-d /home/ -m -
将组名更改为所需的新名称。
groupmod -n
-
锁定“root”帐户。
passwd -l root
-
如果您使用的是ecryptfs(加密的主目录)。 使用
ecryptfs-recover-private
加密目录,然后编辑/.ecryptfs/Private.mnt
以反映新的主目录。/.ecryptfs/Private.mnt -
登出。
exit
-
按Ctrl + Alt + F7 。
现在您可以使用新用户名登录。
重启进入恢复模式并转到root提示符shell(“Drop to root shell prompt”)
首先重新安装根
mount -o remount,rw /
要更改用户名和主文件夹名称,
usermod -l -d /home/ -m
对于组名,
groupmod -n
(使用Ubuntu 13.10,14.04,16.04)单击“系统设置”图标。 然后单击“用户帐户”。 应显示您的管理员帐户。 单击“解锁”按钮。 根据要求输入您的用户密码,以允许更改您的帐户。 解锁后,您可以单击要更改的旧用户名,然后键入新的用户名以替换它。 键入新名称后,单击“锁定”按钮以使更改成为永久更改。 重启Ubuntu。
接收usermod: can't change /etc/password
只需运行以下命令:
在根恢复控制台中运行:
mount -o remount,rw /
然后重新运行:
usermod -l -d /home/ -m
当你执行usermod -l
你会得到useradd: can't change /etc/passwd
错误信息以避免这只是添加sudo --
上面的命令就像
sudo -- usermod -l -d /home/ -m
和
sudo -- groupmod -n
由于并非所有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
,注销和重新登录。