我如何重命名一个Unix用户?

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

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

    改变只是用户名:

     usermod -l new_username old_username 

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

     usermod -l new_username -m -d /new/home/dir old_username 

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

     groupmod -n new_username old_username 

    直接的做法是:

    1. 使用sudo权限创build一个新的临时帐户:
     sudo adduser temp sudo adduser temp sudo 
    1. 从您的当前帐户注销,并返回与临时帐户。

    2. 重命名你的用户名和目录:

    sudo usermod -l新用户名-m -d / home / new-username旧用户名

    1. 重命名您的用户名默认组:
     sudo groupmod -n new-username old-username 
    1. 从临时帐户注销并使用新用户名login到您的帐户。

    2. 删除临时帐户:

     sudo userdel -r temp 

    不要尝试这个,如果你的目录是encryption的!

    如果这是你的情况,你可能要检查:

    https://askubuntu.com/questions/107410/can-you-unencrypt-remove-encryption-from-a-user-home-folder

    甚至只是创build一个用户和rsync旧的用户主文件夹到新的,然后chown'它。

    通常,您可以通过在/etc/passwd (和/etc/shadow ,如果适用)文件中更改其用户名来重命名用户。 在大多数unix系统上, vipw命令用于编辑这些文件(在许多系统上包含一些保护措施,以确保不会太糟糕)。
    有关更多信息,请参见passwd(5)shadow(5)vipw(8)的手册页。

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


    几个操作系统提供了一个系统特定的重命名用户的方法。 例如,许多Linux系统都包含usermod(8)命令,而在AIX上,您可以使用SMIT(或terminal中的smitty )更改帐户名称。
    这些命令通常会处理清理项目,如重命名主目录,如果你问他们。