web-dev-qa-db-ja.com

UNIXユーザーの名前を変更するにはどうすればよいですか?

hedgehogという名前のユーザーがいて、squirrelという名前を付けたいのですが、彼の数値ユーザーIDを変更したくありません。
どうすればこれを達成できますか?

98
Szymon Jeż

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
144
Szymon Jeż

注:ディレクトリが暗号化されている場合は、これを試さないでください!これがあなたのケースであるなら、あなたは最初にチェックしたいかもしれません: 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. Tempアカウントからログアウトし、new-usernameを使用してアカウントに再度ログインします。

  6. 一時アカウントを削除:

    Sudo userdel -r temp
    

それ以外の場合は、(1)新しいユーザーを作成し、(2)古いユーザーのホームフォルダーを新しいフォルダーにrsyncし、(3)chownにします。

13
mimoralea

一般に、/etc/passwd(および該当する場合は/etc/shadow)ファイルでユーザー名を変更することにより、ユーザーの名前を変更できます。ほとんどのUNIXシステムでは、vipwコマンドを使用してこれらのファイルを編集します(多くのシステムでは、物事を過度に混乱させないようにするための保護手段が含まれています)。
passwd(5)shadow(5) 、および vipw(8) 詳細については。

上記の方法では、元のユーザー名が付いている可能性のある他の名前は変更されないことに注意してください(ホームディレクトリが主な例であり、ユーザーごとの個人グループ(それらを使用するシステム上)は別のものです)。 passwdファイルの適切なフィールドを変更し、ディレクトリの名前を変更することで、一貫性を保つためにこれらをクリーンアップすることもできます。


いくつかのオペレーティングシステムでは、システム固有の方法でユーザー名を変更できます。たとえば、多くのLinuxシステムには usermod(8) コマンドが含まれており、AIXでは SMIT(またはsmittyターミナルで)
これらのコマンドは、必要に応じて、ホームディレクトリの名前の変更などのクリーンアップ項目を処理することがよくあります。

4
voretaq7