如何更改用户名?

前段时间我安装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 )。要解决这个问题:

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

     sudo adduser temporary 

    设置密码。

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

     sudo adduser temporary sudo 
  3. 使用命令exit
  4. 返回tty1:使用“临时”用户帐户和密码登录。 如上所述更改您的用户名和文件夹。 exit (直到你得到登录提示)
  5. 返回TTY7( Ctrl + Alt + F7 )登录GUI /普通桌面屏幕,查看是否有效。
  6. 删除临时用户和文件夹:

     sudo deluser temporary sudo rm -r /home/temporary 

把它们放在一起:

  1. 在开始屏幕按Ctrl + Alt + F1
  2. 使用您的用户名和密码登录。
  3. 设置“root”帐户的密码。

     sudo passwd root 
  4. 登出。

     exit 
  5. 使用“root”帐户和您之前设置的密码登录。

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

     usermod -l  -d /home/ -m  
  7. 将组名更改为所需的新名称。

     groupmod -n   
  8. 锁定“root”帐户。

     passwd -l root 
  9. 如果您使用的是ecryptfs(加密的主目录)。 使用ecryptfs-recover-private /.ecryptfs/Private.mnt加密目录,然后编辑/.ecryptfs/Private.mnt以反映新的主目录。

  10. 登出。

     exit 
  11. 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 -d /home/ -m 你会得到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 ,注销和重新登录。