目次
概要
作成済みのユーザーアカウント情報を、後から変更するためのコマンドです。
ログインシェルや所属グループの変更といった日常的な管理から、ログイン名(ユーザーID名)自体の変更、さらには不正アクセス対策としての一時的なアカウントロック(凍結)まで、ユーザー管理における変更作業のほぼ全てを担います。
仕様(引数・オプション)
構文
usermod [オプション] [ユーザー名]
主なオプション
| オプション | 説明 |
| -c [コメント] | GECOSフィールド(氏名や連絡先などのコメント)を変更します。 |
| -d [ディレクトリ] | ホームディレクトリのパス設定を変更します(移動はしません)。 |
| -m | -d と併用し、現在のホームディレクトリの中身を新しい場所へ移動します。 |
| -l [新ログイン名] | ユーザー名(ログインID)を変更します。 |
| -s [シェル] | ログインシェルを変更します(例: /bin/bash)。 |
| -g [グループ] | プライマリグループを変更します。 |
| -G [グループ] | サブグループ(セカンダリグループ)を変更します(上書き注意)。 |
| -a | -G と併用し、既存のサブグループに追加(Append)します。 |
| -u [UID] | ユーザーID(UID)の数値を変更します。 |
| -e [日付] | アカウントの有効期限を設定します(形式: YYYY-MM-DD)。 |
| -f [日数] | パスワード期限切れ後の無効化猶予日数を設定します。 |
| -L | パスワードをロックし、ログイン不可にします(Lock)。 |
| -U | パスワードのロックを解除します(Unlock)。 |
基本の使い方
ユーザー k_tanaka のコメント(実名など)と、使用するログインシェルを変更します。
# コメントを "K.Tanaka (Dev)", シェルを /bin/bash に変更
sudo usermod -c "K.Tanaka (Dev)" -s /bin/bash k_tanaka
# 変更結果を確認
finger k_tanaka
実行結果例
Login: k_tanaka Name: K.Tanaka (Dev)
Directory: /home/k_tanaka Shell: /bin/bash
実践コマンド
ユーザー名(ログインID)を変更する
結婚や組織変更などで、アカウント名自体を変更する場合です。-l オプションを使用します。
※ホームディレクトリの名前は自動では変わらないため、必要に応じて -d -m も組み合わせます。
# ユーザー 'old_name' を 'new_name' に変更
sudo usermod -l new_name old_name
# 確認(IDが変わっていることを確認)
id new_name
アカウントをロック(凍結)・解除する
休職中の社員や、不正利用の疑いがあるアカウントを一時的に停止します。削除ではなく「一時停止」にしたい場合に有効です。
# アカウントをロック(パスワード無効化)
sudo usermod -L target_user
# ロック状態の確認(パスワード欄に '!' が付く)
sudo grep target_user /etc/shadow
# アカウントのロック解除
sudo usermod -U target_user
実行結果例(/etc/shadow)
# ロック時(先頭に ! が付与される)
target_user:!$6$xyz...:19000:0:99999:7:::
# 解除時(! が消える)
target_user:$6$xyz...:19000:0:99999:7:::
カスタムポイント
- グループへの追加 (-aG)最も間違いやすいポイントです。単に
-G group_nameとすると、既存のサブグループが全て消えて、指定したグループだけに置き換わります。現在の所属を維持したまま新しいグループに追加したい場合は、必ず-a(append) を併用してください。Bash# dockerグループに「追加」する(既存グループは維持) sudo usermod -aG docker developer_user - ホームディレクトリの移動 (-d -m)ユーザー名を変更した際、ホームディレクトリも
/home/oldから/home/newに変えたい場合はセットで指定します。Bashsudo usermod -l new_user -d /home/new_user -m old_user
注意点
- ログイン中の操作不可対象のユーザーがログインしている状態や、プロセスを実行している状態では
usermodは失敗します。変更前に必ずログアウトさせるか、プロセスを終了させてください。 - crontabや所有権の追従UIDを変更した場合、システム内のファイル所有権は自動で新しいUIDに追従しない場合があります(ホームディレクトリ内は
-u実行時にある程度ケアされますが、完全ではありません)。UIDの変更は慎重に行ってください。
応用
アカウントに有効期限を設定する
契約社員や臨時スタッフなど、特定の日付で自動的にログインできなくするように設定します。
# 2026年12月31日でアカウントを期限切れにする
sudo usermod -e 2026-12-31 temp_staff
まとめ
usermod は、ユーザー管理における「メンテナンス担当」のコマンドです。
特に重要なのは、**「ロックの -L」と「グループ追加の -aG」**です。この2つを正しく使いこなすことで、セキュリティを維持しながら柔軟な権限管理が可能になります。
