如何重命名Unix用户?


89

我有一个名为的用户hedgehog,我希望他被命名为squirrel,但是我不想更改其数字用户ID。
我该怎么做?


2
可能是因为重命名用户并不是专业SA很难解决的任务。(对于这个问题downvotes。)
HopelessN00b

2
@Jeznet我对此表示不赞成,因为这不仅是一项非常简单的任务,可以通过在google中键入标题来解决,而且您也可以在问到自己的问题后立即回答。似乎浪费时间。
boburob 2012年

10
@boburob“你也尽快回答了自己的问题,你问它似乎是浪费时间”,请参阅:blog.stackoverflow.com/2011/07/...
Szymon Jez的

10
@boburob看到问题时,您看到那个勾选框Answer your own question – share your knowledge, Q&A-style了吗?它在那里是有原因的,如果他们不希望使用它就不会在那里。(理想情况下,是针对更好的问题,但不管怎么说,对某人回答自己的问题的否决是一种不好的形式。)
HopelessN00b 2012年

1
是的,我之前也回答了自己的问题,但对我来说,问一个问题并在同一分钟内粘贴google结果有点浪费时间
boburob 2012年

Answers:


133

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

要仅更改用户名:

usermod --login new_username old_username

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

usermod --login new_username --move-home --home path_to_the_new_home_dir old_username

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

groupmod --new-name new_username old_username

12
您可以使用usermod来完成全部操作usermod -l新用户名-m -d / new / home / dir旧用户名
user9517 2012年

5
另请注意,该组也不会更改。如果还需要重命名old-user-name组,请使用# groupmod -n new-user-name old-user-name
alxs 2014年

1
对于使用的系统autofs,还应该更新/etc/auto.home。我刚遇到这个。
史蒂文·霍维尔

2
可能必须再次运行visudo才能将新用户名放入sudoers列表(如果适用)
Nagev

2
您还需要重命名位于其中的crontab文件/var/spool/cron/crontabs/(如果安装了任何作业)
Daniel F

12

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

这样做的直接方法是:

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

    sudo adduser temp
    sudo adduser temp sudo
    
  2. 从当前帐户注销,然后使用临时帐户重新登录。

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

    sudo usermod -l new-username -m -d /home/new-username old-username
    
  4. 重命名默认用户名的组:

    sudo groupmod -n new-username old-username
    
  5. 从临时帐户注销,然后使用新用户名重新登录到您的帐户。

  6. 删除临时帐户:

    sudo userdel -r temp
    

否则,您只需(1)创建一个新用户,然后(2)rsync将旧用户主文件夹添加到新用户,然后(3)将chown其保存。


在CentOS中,我还需要“ passwd temp”和“ usermod -aG wheel temp”。
布莱恩Z

4

通常,您可以通过更改/etc/passwd(和/etc/shadow,如果适用)文件中的用户名来重命名用户。在大多数UNIX系统上,该vipw命令用于编辑这些文件(在许多系统上,包括一些安全措施以确保您不会将事情弄得太糟)。
请参阅手册页passwd(5)shadow(5)以及vipw(8)获取更多信息。

请注意,上述方法不会重命名可能带有原始用户名的其他内容(主目录是主要示例,每用户个人组(在使用它们的系统上)是另一个)。您可能还希望通过更改passwd文件中的相应字段并重命名目录来清理它们以保持一致性。


几种操作系统提供了一种特定于系统的重命名用户的方式。例如,许多Linux系统都包含该usermod(8)命令,在AIX上,您可以使用SMIT(或smitty在终端中)更改帐户名。
如果要求,这些命令通常会处理清理项,例如重命名主目录。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.