如何更改我的用户名?

Tak*_*kat 404 permissions keyrings user-profile

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

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

Egi*_*gil 429

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

要管理用户数据库的各个方面,您可以使用该usermod工具。

要更改用户名(最好在未登录的情况下执行此操作):

sudo usermod -l newUsername oldUsername
Run Code Online (Sandbox Code Playgroud)

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

要更改主文件夹,请使用

sudo usermod -d /home/newHomeDir -m newUsername
Run Code Online (Sandbox Code Playgroud)

更改用户名后。

举例来说,你可以注销,下降到控制台(Ctrl+ Alt+ F1),并sudo su -成为真正的根(而不是sudo -s,其中$ 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)。为了获得围绕这个:

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

    sudo adduser temporary
    
    Run Code Online (Sandbox Code Playgroud)

    设置密码。

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

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

    sudo deluser temporary
    sudo rm -r /home/temporary
    
    Run Code Online (Sandbox Code Playgroud)

  • 不幸的是,对于 $HOME 下的不同配置文件,情况并非如此,尝试运行类似 `grep -IRFl /home/username ~` 这样的内容,您将看到有多少对您的主目录的引用存储在那里。 (12认同)
  • 对于那些具有加密主文件夹的人,您必须编辑 `/home/.ecryptfs/oldusername/.ecryptfs/Private.mnt` 以指向您的新主文件夹,否则您将无法通过 Unity 登录。 (6认同)
  • 您还需要更改组: sudo groupmod -n new-name current-name (5认同)
  • 这是一个简单的修复——只需统一使用用户帐户编辑器,然后重新启动。 (2认同)
  • `sudo usermod -d /home/edge -m edge` 产生: `usermod: 目录 /home/empedokles 无法在 /home/edge` 中重命名,即第 4 步不起作用。 (2认同)
  • @JTC *从不* 用普通的 `nano` 编辑 `sudoers`。始终使用`visudo`。 (2认同)
  • 不适用于 Ubuntu 16.04。``sudo su -``, ``sudo usermod -l new old`` -> ``usermod: user old 当前被进程 123 使用``,其中 123 = bash。如果你杀死它“kill -9 123”,它就会退出并进入登录屏幕。IE。非 root 无法更改自己的用户名。 (2认同)

小智 131

把它们放在一起:

  1. 退出会话或重新启动计算机以返回开始屏幕。

  2. 在开始屏幕转到控制台模式 tty。按Ctrl+ Alt+ F1(在某些 Ubuntu 修订版中,这可能是Ctrl+ Alt+ F2

  3. 使用您的用户名和密码登录。

  4. 为“root”帐户设置密码。

     sudo passwd root
    
    Run Code Online (Sandbox Code Playgroud)
  5. 登出。

     exit
    
    Run Code Online (Sandbox Code Playgroud)
  6. 使用“root”帐户和您之前设置的密码登录。

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

     usermod -l <newname> -d /home/<newname> -m <oldname>
    
    Run Code Online (Sandbox Code Playgroud)
  8. 将组名称更改为所需的新名称。

     groupmod -n <newgroup> <oldgroup>
    
    Run Code Online (Sandbox Code Playgroud)
  9. 锁定“root”帐户。

     passwd -l root
    
    Run Code Online (Sandbox Code Playgroud)
  10. 如果您使用的是 ecryptfs(加密主目录)。使用ecryptfs-recover-private和编辑挂载您的加密目录<mountpoint>/.ecryptfs/Private.mnt以反映您的新主目录。

  11. 登出。

    exit
    
    Run Code Online (Sandbox Code Playgroud)
  12. Ctrl+ Alt+F7返回 Ubuntu 图形模式登录屏幕(在某些 Ubuntu 修订版中,这可能是Ctrl+ Alt+ F1)。

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

  • 如果在`usermod -l ` 之后你得到一个`user &lt;oldname&gt; 正在被进程&lt;processno&gt;` 使用,你可以使用`ps aux | 找到那个进程(可能是一个守护进程,或者tmux/screen)。grep &lt;进程号&gt;`。您可能希望优雅地停止该进程,否则您可以`kill &lt;processno&gt;`。 (10认同)
  • 如果通过 SSH 执行此操作,您需要在 SSHD 配置中启用 root 登录一段时间。转到 `sudo nano /etc/ssh/sshd_config ` 取消注释 **PermitRootLigin** 并将值更改为 **yes**。重启 SSH `sudo systemctl restart sshd`。使用 root 修改用户后,将所有内容恢复原状,即锁定 root 帐户并禁用远程 root 登录。 (2认同)

kar*_*k87 30

在恢复模式下重新启动并转到 root 提示符 shell(“Drop to root shell prompt”)

首先重新挂载root

mount -o remount,rw /
Run Code Online (Sandbox Code Playgroud)

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

usermod -l <newname> -d /home/<newname> -m <oldname>
Run Code Online (Sandbox Code Playgroud)

对于组名,

groupmod -n <newgroup> <oldgroup>
Run Code Online (Sandbox Code Playgroud)

  • 如果您的主目录已加密,请不要这样做!!!!我遵循了这个程序,它让我进行了 2 小时的疯狂骑行......恢复的唯一方法是再次执行此程序并将原始(不喜欢的)名称放回原处。您将遇到的问题是“无法将 chdir 装入挂载观点” (4认同)

小智 11

在 Ubuntu 13.10、14.04、16.04 上:

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

  • 这并没有改变我的用户名,只是改变了名字。旧用户名仍然出现在终端中,并作为主目录和组(即使在重新启动后)。 (10认同)