【Linux】userdelコマンドでユーザーアカウントを削除する

目次

概要

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

注意点

  1. -r オプションの付け忘れ -r を付けずに削除すると、/home/ 配下に所有者不明(UIDのみが残った状態)のディレクトリが残り続けます。これらはディスク容量を圧迫するだけでなく、将来同じUIDを持つユーザーが作成された際に、データが見えてしまうセキュリティリスクになり得ます。
  2. システムユーザーの削除 管理用のアカウントや、DBなどのサービス実行用アカウントを誤って削除しないよう注意してください。
  3. 手動削除が必要なファイル -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 オプションを付けることを習慣にしてください。

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

この記事を書いた人

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

目次