如何重命名 unix 用户?

Szy*_*Jeż 110 linux unix user-management user-accounts

我有一个用户名hedgehog,我希望他被命名squirrel,但我不想更改他的数字用户 ID。
我怎样才能做到这一点?

Szy*_*Jeż 164

在 Linux 下,该usermod命令会更改用户名。它修改系统帐户文件以反映在命令行上指定的更改。

仅更改用户名:

usermod --login new_username old_username
Run Code Online (Sandbox Code Playgroud)

要更改用户名和主目录名称:

usermod --login new_username --move-home --home path_to_the_new_home_dir old_username
Run Code Online (Sandbox Code Playgroud)

您可能还想更改与用户关联的组的名称:

groupmod --new-name new_username old_username
Run Code Online (Sandbox Code Playgroud)

  • 您可以使用 usermod 来完成整个操作 usermod -l new-user-name -m -d /new/home/dir old-user-name (13认同)
  • 另请注意,该组也未更改。如果您还需要重命名 ``old-user-name`` 组,请使用 ``# groupmod -n new-user-name old-user-name``。 (6认同)
  • 您还需要重命名位于 `/var/spool/cron/crontabs/` 中的 crontab 文件(如果您安装了任何作业) (3认同)
  • 对于使用 [`autofs`](https://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-nfs-client-config-autofs.html) 的系统,您还应该更新 `/等/auto.home`。我刚刚遇到了这个。 (2认同)
  • 如果适用,可能必须再次运行 visudo 以将新用户名放入 sudoers 列表 (2认同)

小智 14

注意:如果您的目录已加密,请不要尝试!如果这是您的情况,您可能需要先检查:https : //askubuntu.com/questions/107410/can-you-unencrypt-remove-encryption-from-a-user-home-folder

这样做的直接方法是:

  1. 创建一个具有 sudo 权限的新临时帐户:

    sudo adduser temp
    sudo adduser temp sudo
    
    Run Code Online (Sandbox Code Playgroud)
  2. 从您当前的帐户注销并使用临时帐户重新登录。

  3. 重命名您的用户名和目录:

    sudo usermod -l new-username -m -d /home/new-username old-username
    
    Run Code Online (Sandbox Code Playgroud)
  4. 重命名您的用户名默认组:

    sudo groupmod -n new-username old-username
    
    Run Code Online (Sandbox Code Playgroud)
  5. 从临时帐户注销并使用新用户名重新登录到您的帐户。

  6. 删除临时帐户:

    sudo userdel -r temp
    
    Run Code Online (Sandbox Code Playgroud)

否则,您只需 (1) 创建一个新用户和 (2)rsync旧用户主文件夹到新用户然后 (3)chown它。