ユーザーネームの変更

提供: ArchWiki
移動先: 案内検索

Arch (やその他の Linux フレーバー) でユーザーネームを変更するのは正しくやれば簡単かつ安全に変更できます。必要であればユーザーと関連するグループの名前も変更することができます。以下の手順に従えばユーザーの UID/GID は変更されないのでセットアップ済みのファイルのパーミッションが壊れることはありません。

手順

警告: Make certain that you are not logged in as the user whose name you are about to change! Open a new tty (Ctrl+Alt+F1) and log in as root or as another user and su to root. usermod should prevent you from doing this by mistake.

ユーザーのログイン名を変更

次のコマンドでユーザーのログイン名が変更されます。

# usermod -l newname oldname

本名を変更

次のコマンドでユーザーの本名が変更されます。

# usermod -c "New Real Name" username

ユーザーの $HOME を変更

username のホームディレクトリだけを変更します。手動で新しいディレクトリを作成する必要はありません。移動は完全に自動的に行われます。

# usermod -d /my/new/home username

ユーザーの $HOME を移動して中身を移動

username のホームディレクトリの中身を /my/new/home に移動してユーザーのホームディレクトリをその新しいディレクトリに設定します。これも、自動的な移動です。

# usermod -m -d /my/new/home username

昔の $HOME から新しい $HOME にリンクを作成

username の旧ホームディレクトリから新しいディレクトリにリンクを作成します。こうすることでパスがハードコードされているファイルもプログラムから見つけられるようになります。

警告: Make sure there is no trailing / on /my/old/home
# ln -s /my/new/home/ /my/old/home

グループ名を変更

ユーザーのグループも変更したい場合:

# groupmod -n newname oldname
ノート: This will change a group name but not the numerical GID of the group.

詳細は usermod や groupmod の man ページを見て下さい。

手動で /etc/passwd を扱う

可能な限り、ユーザー名やホームディレクトリを変更するときは上記のコマンドを使って下さい。ただし実際に何をやっているのか知りたい場合は、手動で行うこともできます。

/etc/passwd ファイルフォーマット

このファイルの各行は特定のフォーマットに従っています。7つのフィールドがあり、それぞれコロン (":") で区切られています。

<login name>:<password>:<numerical UID>:<numerical GID>:<Real name/comments>:<home directory>:<user command interpreter>
警告: It is unsafe to set the <password> field in /etc/passwd. Passwords should be changed (by root) with the passwd command!
  • <login name>: このフィールドは空にできません。標準的な *NIX 命名規則が適用されます。
  • <password>: 暗号化されたパスワードが入りますが、小文字の "x" (クォートは不要) で /etc/shadow にパスワードを保存するのが推奨されます。
  • ユーザーとグループの名前には数字の UID と GID が付きます (User ID と Group ID)。Arch では、(root の次の) 1番目のログイン名はデフォルトで UID 1000 となっています。その次のユーザーの UID/GID エントリは 1000 よりも高い値でなくてはなりません。GID は特定のユーザーのプライマリグループと一致している必要があります。GID の数値は /etc/group に載っています。
  • <Real name/comments>: finger などのサービスによって使われます。このフィールドはオプションで、空でもかまいません。
  • <home directory>: ログインコマンドによって $HOME 環境変数を設定するのに使われます。特別なユーザーを使用するサービスであれば "/" を使っても問題ありませんが、通常ユーザーでは推奨されません。
  • <user command interpreter>: ユーザーのデフォルトシェルのパスです。通常は Bash ですが、他のコマンドラインインタプリタを使うこともできます。users のデフォルト設定は "/bin/bash" (クォートなし) です。他の CLI を使う場合、ここにパスを設定してください。このフィールドはオプションです。

例 (ユーザー):

jack:x:1001:100:Jack Smith,some comment here,,:/home/jack:/bin/bash

上記の行を解説すると: ユーザー jack (パスワードは /etc/shadow に保存) は UID 1001 でプライマリグループは 100 (users)。Jack Smith がフルネームでありアカウントに関連するコメントが存在。ホームディレクトリは /home/jack で Bash を使用。

トラブルシューティング

  • sudo を使用する場合 /etc/sudoers を更新して新しいユーザー名を反映させてください (root で visudo コマンドを使用)。
  • ~/.bashrc の PATH の記述を変更している場合、新しいユーザー名を反映させてください。
  • 同じく、/etc/rc.local などの設定ファイルでも古いユーザーのホームディレクトリにあるスクリプトやマウントポイントを指定している場合は修正します。
  • 個人用の crontab/var/spool/cron のユーザーファイルを古い名前から新しい名前に変更して、crontab -e を開いて相対パスを変更してファイルのパーミッションも調整します。
  • Wine の個人用フォルダ・ファイルコンテンツ ~/.wine/drive_c/users, ~/.local/share/applications/wine/Programs は手動で名前を変更・編集する必要があります。
  • Firefox におけるスペルチェックの有効化は再度行って下さい。そうしないとユーザーの名前を変更後、スペルチェックが実行されません。
  • Enigmail など特定の Thunderbird アドオンは再インストールが必要です。
  • ホームディレクトリの絶対パス (/home/oldname) を使っているファイル (デスクトップショートカット, シェルスクリプトなど) は新しいホームを使うように修正する必要があります。シェルスクリプトではこういう問題が起こらないように、ホームディレクトリを指定するときは ~$HOME 変数を使いましょう。
  • また /etc の設定ファイルで絶対パスを使っている場合は忘れずに編集してください (Samba や CUPS など)。どのファイルを編集すればいいかわからないときは grep コマンドを使います: # grep -r {old_user} *