「ユーザーネームの変更」の版間の差分
(ページの作成:「Category:セキュリティ en:Change username es:Change username zh-CN:Change username {{Related articles start}} {{Related|ユーザーとグループ}}...」) |
細 (文字列「[[zh-CN:」を「[[zh-hans:」に置換) |
||
2行目: | 2行目: | ||
[[en:Change username]] |
[[en:Change username]] |
||
[[es:Change username]] |
[[es:Change username]] |
||
− | [[zh- |
+ | [[zh-hans:Change username]] |
{{Related articles start}} |
{{Related articles start}} |
||
{{Related|ユーザーとグループ}} |
{{Related|ユーザーとグループ}} |
2017年1月29日 (日) 00:35時点における版
関連記事
Arch (やその他の Linux フレーバー) でユーザーネームを変更するのは正しくやれば簡単かつ安全に変更できます。必要であればユーザーと関連するグループの名前も変更することができます。以下の手順に従えばユーザーの UID/GID は変更されないのでセットアップ済みのファイルのパーミッションが壊れることはありません。
目次
手順
ユーザーのログイン名を変更
次のコマンドでユーザーのログイン名が変更されます。
# 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 の旧ホームディレクトリから新しいディレクトリにリンクを作成します。こうすることでパスがハードコードされているファイルもプログラムから見つけられるようになります。
# ln -s /my/new/home/ /my/old/home
グループ名を変更
ユーザーのグループも変更したい場合:
# groupmod -n newname oldname
詳細は usermod や groupmod の man ページを見て下さい。
手動で /etc/passwd を扱う
可能な限り、ユーザー名やホームディレクトリを変更するときは上記のコマンドを使って下さい。ただし実際に何をやっているのか知りたい場合は、手動で行うこともできます。
/etc/passwd ファイルフォーマット
このファイルの各行は特定のフォーマットに従っています。7つのフィールドがあり、それぞれコロン (":") で区切られています。
<login name>:<password>:<numerical UID>:<numerical GID>:<Real name/comments>:<home directory>:<user command interpreter>
- <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} *
。