userdel コマンドは、既に作成されているLinux ユーザアカウントを削除するためのコマンドです。
/etc/passwd や /etc/shadow などのユーザ情報から、指定したユーザを削除します。
デフォルトではユーザ情報のみを削除し、ホームディレクトリやメールスプールは残す挙動が一般的です。
ホームディレクトリなども含めて削除したい場合は、-r オプションを付ける必要があります。
「ログインさせたくない」だけであれば usermod -L によるアカウントロックという選択肢もあります。
userdel は実ファイルにも影響しうるため、本番環境で利用する際は慎重に扱う必要があります。
userdel [オプション] ユーザ名
指定したユーザ名は既に存在している必要があります。
root 権限での実行が必要で、ログイン中のユーザやプロセス稼働中のユーザを削除する場合は特に注意が必要です。
ユーザ削除後も、そのユーザが所有していたファイルやディレクトリは残るのが基本です。
ホームディレクトリの扱いや不要ファイルの整理は、運用ポリシーに応じて決めておくと安心です。
・ユーザアカウントを削除する(ホームディレクトリは残す)
userdel testuser
もっとも基本的な使い方で、ユーザ testuser をシステムから削除します。
/etc/passwd や /etc/shadow から testuser のエントリが削除されますが、
ホームディレクトリ(/home/testuser など)やその配下のファイルはそのまま残ります。
・ユーザのホームディレクトリとメールスプールも一緒に削除する
userdel -r testuser
-r(–remove)を付けると、ユーザアカウントに加えてホームディレクトリとメールスプールも削除します。
不要なユーザ+ホームディレクトリをまとめて消したい場合に便利ですが、
後から復元が難しいため、必要なファイルがないか事前に確認してから実行するようにしましょう。
・ホームディレクトリは残したまま、アカウントだけ削除する
userdel appuser
アプリケーション用ユーザなどで、ホームディレクトリ配下のデータをしばらく残しておきたい場合は、
-r を付けずにアカウントだけ削除します。
ホームディレクトリの所有 UID/GID は残るため、後から別ユーザに引き継ぎたい場合は chown で所有者を変更します。
・ログイン中やプロセス稼働中でも強制的に削除する
userdel -f testuser
-f(–force)は、ログイン中のユーザやプロセスが動いているユーザでも強制的に削除しようとするオプションです。
また、ホームディレクトリやメールスプールが他ユーザ所有でも削除を試みます。
非常に危険なため、基本的には プロセス停止・ログアウトを確認してから通常の userdel を実行するのがおすすめです。
・アカウントとホームディレクトリを強制的に削除する
userdel -r -f testuser
-r と -f を組み合わせた例です。
ログイン中かどうかに関わらず、アカウント・ホームディレクトリ・メールスプールを削除しに行くため、
最終手段として使うべきオプションです。誤って重要ユーザに対して実行しないよう注意してください。
・chroot 環境内のユーザを削除する
userdel -R /mnt/chroot testuser
-R ディレクトリ(–root)は、指定したディレクトリをルートディレクトリとして扱います。
例えば /mnt/chroot に別のシステムの /etc・/home などをマウントしている場合、
その環境内のユーザを削除したいときにこのオプションを使います。
・別プレフィックス配下の /etc を対象に削除する
userdel -P /mnt/target testuser
-P プレフィックス は、/etc などのベースパスを指定したディレクトリに切り替えて処理を行います(一部ディストリビューションのみ)。
chroot まではしないが、別マウント先の設定ファイル群に対してユーザ削除を行いたい場合に使われます。
・アカウント削除ではなくロックで対応する(参考:usermod)
usermod -L tempuser
ログインさせたくないだけであれば、userdel ではなく usermod -L によるアカウントロックという方法もあります。
アカウント情報やホームディレクトリを残したまま、一時的に利用停止にしたい場合はこちらの方が安全です。
・退職者・一時利用ユーザの削除
退職やプロジェクト終了などで不要になったユーザアカウントを削除する際に使います。
まず id ユーザ名 や getent passwd で情報を確認し、必要なファイルが残っていないかをチェックしてから実行するのが安全です。
・アプリケーション用ユーザの整理
アプリケーションのアンインストール後に、不要になったアプリケーション用ユーザを削除するケースでも使われます。
ログやデータディレクトリの所有者がそのユーザになっている場合が多いため、
削除前にどのディレクトリを残すか/別ユーザに引き継ぐかを決めておくことが大切です。
・テスト環境のクリーンアップ
検証用に作成した一時ユーザをまとめて削除する、といった作業にも向いています。
スクリプトから useradd とセットで使い、テストのセットアップ/クリーンアップを自動化することもあります。
・インシデント対応の最終手段
セキュリティインシデントなどで「このアカウントはもう絶対に使わせない」という判断になった場合、
アカウントロックに加えて userdel で完全削除することもあります。
その際は、ログ保全や証跡の確保との兼ね合いを事前に検討しておく必要があります。
userdel は戻しづらい操作が多いため、「本当に削除が必要か」「ロックで代替できないか」を検討したうえで使うと安心です。
特に -r や -f を付ける場合は、対象ユーザと影響範囲をよく確認してから実行してください。
| short option | long option | description |
|---|---|---|
| -r | --remove | ユーザアカウントに加えてホームディレクトリおよびメールスプールも削除する |
| -f | --force | ログイン中やプロセス稼働中でもアカウント削除を試みるほかホームディレクトリなどの削除を強制する |
| -R | --root | 指定したディレクトリをルートディレクトリとみなしその配下の /etc やホームディレクトリに対して処理を行う |
| -P | --prefix | 指定したディレクトリを /etc などのベースパスとして扱う(一部ディストリビューションでのみ利用可能) |
| -Z | --selinux-user | 対象ログインに関連付けられた SELinux ユーザマッピングも削除する(SELinux 環境でのみ有効) |
| -h | --help | userdel コマンドの使い方(ヘルプ)を表示して終了する |
| -V | --version | userdel コマンドのバージョン情報を表示して終了する |
ここでは、shadow-utils 系で一般的に利用される userdel コマンドの主なオプションを TablePress の表としてまとめている想定です。
実際に利用できるオプションや挙動は、ディストリビューションやバージョンによって異なる場合があるため、
本番環境で使用する前に man userdel で最新の仕様を確認することをおすすめします。
新着情報
ブログランキングに参加しています。クリックして応援していただけると嬉しいです。

人気ブログランキング
![]()
にほんブログ村