目次
概要
Linuxシステムから不要になったユーザーアカウントを削除するためのコマンドです。 退職した社員のアカウントや、検証用に作成した一時的なユーザーをシステムから抹消する際に使用します。 重要な点として、「ユーザー情報だけを消す(ファイルは残す)」か「ホームディレクトリごと完全に消す」かをオプションで制御できます。
仕様(引数・オプション)
構文
userdel [オプション] [ユーザー名]
主なオプション
| オプション | 説明 |
| -r / –remove | ユーザーのホームディレクトリとメールスプール(メールボックス)も一緒に削除します。 |
| -f / –force | ユーザーがログイン中であっても強制的に削除します。また、ホームディレクトリが他のユーザーの所有であっても削除を強行します(非推奨)。 |
基本の使い方
オプションを付けずに実行すると、アカウント情報(/etc/passwd 等)のみを削除し、ホームディレクトリやメールデータは残します。 誤って削除した場合の復旧用や、データだけはアーカイブとして残したい場合に利用します。
# 対象ユーザー: archived_user
# 削除前の確認
id archived_user
ls -d /home/archived_user
# ユーザーのみ削除(ファイルは残す)
sudo userdel archived_user
# 削除後の確認
id archived_user
ls -d /home/archived_user
実行結果例
# idコマンドの結果(ユーザーは存在する)
uid=1005(archived_user) gid=1005(archived_user) groups=1005(archived_user)
# ディレクトリ確認
/home/archived_user
# --- userdel 実行後 ---
# idコマンドの結果(ユーザーは見つからない)
id: 'archived_user': no such user
# ディレクトリ確認(ファイルはまだ残っている!)
/home/archived_user
実践コマンド
ユーザーとホームディレクトリを完全に削除する
通常のアカウント削除では、こちらの -r オプション付きを使用することが推奨されます。ゴミファイルを残さずクリーンに削除します。
# 対象ユーザー: temp_staff
# ホームディレクトリごと削除
sudo userdel -r temp_staff
# 確認(ディレクトリも消えていることを確認)
ls -d /home/temp_staff /var/mail/temp_staff
実行結果例
ls: cannot access '/home/temp_staff': No such file or directory
ls: cannot access '/var/mail/temp_staff': No such file or directory
カスタムポイント
- 強制削除 (-f) 対象ユーザーがSSHなどでログインしたままだったり、バックグラウンドでプロセスを実行中の場合、通常は削除に失敗します。
-fを付けると、プロセスを強制終了させて削除を強行できますが、データ破損のリスクがあるため、基本的にはkillコマンド等でプロセスを停止させてから削除すべきです。Bashsudo userdel -f locked_user
注意点
- -r オプションの付け忘れ
-rを付けずに削除すると、/home/配下に所有者不明(UIDのみが残った状態)のディレクトリが残り続けます。これらはディスク容量を圧迫するだけでなく、将来同じUIDを持つユーザーが作成された際に、データが見えてしまうセキュリティリスクになり得ます。 - システムユーザーの削除 管理用のアカウントや、DBなどのサービス実行用アカウントを誤って削除しないよう注意してください。
- 手動削除が必要なファイル
-rオプションでも、ホームディレクトリ以外の場所(例:/var/tmpや/optなど)にユーザーが作成したファイルは削除されません。これらはfindコマンド等でUIDを元に検索して手動削除する必要があります。
応用
削除前にファイルをバックアップしてから完全に消す
実運用では、いきなり -r で消すのではなく、データをtarアーカイブに退避させてから削除するのが安全です。
# 1. ホームディレクトリをバックアップ
sudo tar czvf /backup/closed_user_home.tar.gz /home/closed_user
# 2. バックアップ完了後に完全削除
sudo userdel -r closed_user
まとめ
userdel は「ユーザーを消す」コマンドですが、デフォルトでは「ファイルを残す」という安全側に倒した挙動をします。 サーバーのクリーンアップ作業などで「跡形もなく消したい」場合は、必ず -r オプションを付けることを習慣にしてください。
