MENU

ユーザーアカウントを一時停止・再開してログインを制御する手順

目次

アカウント停止が必要になる場面と方針

退職者のアカウント処理、長期休暇中のセキュリティ対応、不審なアクセスへの応急処置など、ユーザーアカウントを一時的に無効化したい場面は運用中に必ず訪れます。

アカウントを「削除」してしまうと、ホームディレクトリや所有ファイルの扱い、後から復旧する手間が増えます。一方で「停止」だけなら、解除するだけで元の状態に戻せます。再利用の可能性があるアカウントや一時対応には、削除よりも停止が適しています。

Linux では目的に応じて3種類の方法を使い分けられます。

  • パスワードをロック:SSH パスワード認証だけを止めたい場合
  • ログインシェルを無効化:SSH 鍵認証も含めてインタラクティブなログインをすべて止めたい場合
  • アカウントに有効期限を設定:特定の日以降を自動で停止したい場合

パスワードをロックして停止・再開する

passwd -l でアカウントのパスワードをロックします。ロックするとパスワード認証によるログインが拒否されます。解除は passwd -u です。

# ロック
sudo passwd -l username

# ロック解除
sudo passwd -u username

ロック時、/etc/shadow のパスワードフィールド先頭に ! が付加されます。元のハッシュは保持されるため、解除すれば以前のパスワードでそのまま認証できます。設定内容を引き継いだまま一時停止できる点がこの方法の利点です。

ただし、パスワードロックは SSH 鍵認証には影響しません。公開鍵でのログインを許可している環境では、この方法だけでは不十分です。鍵認証も止めたい場合は、次のログインシェル無効化と組み合わせてください。

ログインシェルを無効化してすべてのログインを止める

SSH 鍵認証を含むすべてのインタラクティブなログインを禁止するには、ログインシェルを /sbin/nologin に変更します。対象ユーザーがログインしようとすると「This account is currently not available.」と表示されてセッションが終了します。

# ログインを禁止
sudo usermod -s /sbin/nologin username

# 元のシェルに戻す(例: bash)
sudo usermod -s /bin/bash username

元のシェルが不明なときは、変更前に /etc/passwd で確認しておくと安全です。

grep "^username:" /etc/passwd

出力の7列目(コロン区切り)がログインシェルのパスです。変更前にメモしておくと、再開時に迷わずに済みます。

有効期限を設定して自動で停止・再開する

契約期間が決まっているアカウントや、一定日以降は不要になるアカウントには有効期限の設定が便利です。usermod -e で指定した日の翌日以降、ログインが自動的に拒否されます。

# 有効期限を設定(例: 2026-12-31 まで有効)
sudo usermod -e 2026-12-31 username

# 有効期限を解除(無期限に戻す)
sudo usermod -e "" username

日付の形式は YYYY-MM-DD です。chage コマンドでも同様の設定が可能で、対話形式で設定したい場合は sudo chage username を使います。再開(期限延長)は usermod -e で新しい日付を指定するか、空文字で期限を削除します。

アカウントの状態を確認する

設定後は次のコマンドで状態を確認できます。

パスワードのロック状態は passwd -S で確認できます。

sudo passwd -S username

出力の2列目が L ならロック中、P なら有効なパスワードが設定されている状態です。

username L 2026-11-11 0 99999 7 -1

有効期限・パスワードエイジングの詳細は chage -l で一覧できます。

sudo chage -l username

「Account expires」の行で有効期限を確認できます。never と表示されていれば無期限の状態です。ログインシェルは先述の grep "^username:" /etc/passwd で確認できます。

よくあるつまずきと注意点

パスワードロックだけでは SSH 鍵認証を止められない
passwd -l はパスワード認証のみを無効化します。公開鍵認証を使っているユーザーはロック後もログインできてしまいます。確実にログインを遮断するには、nologin シェルへの変更と組み合わせるか、対象ユーザーの ~/.ssh/authorized_keys を削除・退避させる対応が必要です。

usermod -e の日付は「翌日から無効」になる
usermod -e 2026-12-31 と設定した場合、ログインできなくなるのは 2027-01-01 以降です。指定した当日の 00:00 から無効になるわけではありません。急ぎの停止が必要なときは過去の日付を指定するか、パスワードロックや nologin シェルを使う方が確実です。

root アカウントを誤ってロックしてしまう
passwd -l root を誤って実行すると、パスワード認証での root ログインが不可になります。sudo 権限を持つ別ユーザーがいれば sudo passwd -u root で解除できますが、いない場合はシングルユーザーモードでの復旧が必要です。root に対してこの操作を行う際は十分に注意してください。

nologin は sudo -u での実行を止めない
/sbin/nologin はインタラクティブなログインセッションを対象とします。sudo -u username command のように直接コマンドを実行する場合は影響を受けないケースがあります。停止したアカウントで意図しないコマンド実行が起きていないか、定期的に確認することをお勧めします。

usermod 実行前に元のシェルを記録しておく
nologin シェルへ変更する際、元のシェルパスを記録し忘れると再開時に迷うことがあります。変更前に /etc/passwd をメモするか、getent passwd username でシェルパスを確認しておく習慣をつけると安心です。

「コマンドは打てる。次は”現場で通用する型”を最短で身につけたい」——そんなあなたへ。

ネットの断片的なTipsをコピペするだけでは、体系的な運用スキルはなかなか積み上がりません。リナックスマスター.JPの無料メルマガ「リナマガ」では、現場で実際に使うLinuxサーバー運用の考え方を、順を追って実務目線でお届けしています。いま登録された方には、安全なサーバー構築の「型」をまとめた『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼント中です。

>> 図解60P『Linux入門マニュアル』を無料で受け取る
(メルマガ登録は10秒・いつでも解除OK)

※ 「独学の時間がもったいない」「プロから現場の技術を最短で学びたい」という本気の方には、2日で実務レベルが身につく初心者向けハンズオンセミナーもご用意しています。

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

この記事を書いた人

目次