【Linux】usermodコマンドでユーザー設定の変更・アカウントロックを行う

目次

概要

作成済みのユーザーアカウント情報を、後から変更するためのコマンドです。

ログインシェルや所属グループの変更といった日常的な管理から、ログイン名(ユーザー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

注意点

  1. ログイン中の操作不可対象のユーザーがログインしている状態や、プロセスを実行している状態では usermod は失敗します。変更前に必ずログアウトさせるか、プロセスを終了させてください。
  2. crontabや所有権の追従UIDを変更した場合、システム内のファイル所有権は自動で新しいUIDに追従しない場合があります(ホームディレクトリ内は -u 実行時にある程度ケアされますが、完全ではありません)。UIDの変更は慎重に行ってください。

応用

アカウントに有効期限を設定する

契約社員や臨時スタッフなど、特定の日付で自動的にログインできなくするように設定します。

# 2026年12月31日でアカウントを期限切れにする
sudo usermod -e 2026-12-31 temp_staff

まとめ

usermod は、ユーザー管理における「メンテナンス担当」のコマンドです。

特に重要なのは、**「ロックの -L「グループ追加の -aG」**です。この2つを正しく使いこなすことで、セキュリティを維持しながら柔軟な権限管理が可能になります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次