userdelコマンドでLinuxユーザーを削除する方法|-rオプションと安全な手順コマンド

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxコマンド, LinuxコマンドU-Z, ユーザ・グループ管理コマンド > userdelコマンドでLinuxユーザーを削除する方法|-rオプションと安全な手順コマンド
「退職した社員のLinuxアカウントを削除したいけれど、ホームディレクトリやファイルはどうなるのか不安」
「userdelを実行したら "currently used by process" とエラーが出て削除できない」
Linuxサーバーを運用していると、不要になったユーザーアカウントの削除は避けて通れない作業です。しかし、手順を誤ると、必要なデータを消してしまったり、逆にゴミファイルが残り続けたりと、思わぬトラブルにつながります。

この記事では、userdelコマンドでLinuxユーザーを安全に削除する方法を解説します。基本的な使い方から、-rオプションによるホームディレクトリの同時削除、削除前の確認手順、トラブル対処法まで、実務で必要な知識をまとめました。
【この記事でわかること】
・userdel はデフォルトではホームディレクトリを削除しない。-r オプションで一緒に削除する
・削除前に id・ps -u・crontab -l でユーザー情報・プロセス・定期ジョブを必ず確認する
・安全な手順は「usermod -L でロック → プロセス終了 → バックアップ → userdel -r」
・-f オプションはログイン中でも強制削除する最終手段で、通常は使わない
・userdel 後は find / -nouser で孤立ファイルを検索して片付ける

「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

userdelコマンドとは?~ユーザー削除の仕組みを理解する

userdel は、Linuxシステムからユーザーアカウントを削除するコマンドです。実行すると、以下のファイルからそのユーザーの情報が削除されます。

/etc/passwd:ユーザーの基本情報(ユーザー名、UID、ホームディレクトリ、ログインシェルなど)
/etc/shadow:パスワードのハッシュと有効期限の情報
/etc/group:そのユーザーが所属していたグループの情報
/etc/gshadow:グループパスワードの情報

※userdelの実行にはroot権限(またはsudo)が必要です。一般ユーザーでは実行できません。

重要な注意点:デフォルトの userdel は、ユーザーのホームディレクトリやメールスプールを削除しません。これらも含めて削除したい場合は -r オプションを使います(後述)。

削除前の確認手順(必ず実施すること)

ユーザーを削除する前に、以下の情報を必ず確認してください。確認なしにいきなり userdel を実行するのは、現場では厳禁です。

1. ユーザー情報を確認する(id・grep)

まず、削除対象のユーザーが存在するか、どのグループに所属しているかを確認します。

# ユーザーのUID・GID・所属グループを確認 # id testuser uid=1001(testuser) gid=1001(testuser) groups=1001(testuser),10(wheel) # /etc/passwdでユーザー情報を確認 # grep testuser /etc/passwd testuser:x:1001:1001::/home/testuser:/bin/bash

2. ユーザーのプロセスを確認する(ps -u)

削除対象のユーザーがプロセスを実行中だと、userdelがエラーになります。必ず事前に確認しましょう。

# 対象ユーザーのプロセスを確認 # ps -u testuser PID TTY TIME CMD 2345 pts/1 00:00:00 bash 2367 pts/1 00:00:00 vim

プロセスが残っている場合は、そのユーザーにログアウトを依頼するか、プロセスを終了させてから削除を進めます。

3. ホームディレクトリの中身を確認する

ホームディレクトリに重要なファイルがないか確認します。必要なデータがあれば、削除前にバックアップを取っておきましょう。

# ホームディレクトリの使用量を確認 # du -sh /home/testuser 245M /home/testuser # 必要に応じてバックアップ # tar czf /backup/testuser_home_backup.tar.gz /home/testuser

userdelの基本的な使い方

確認が終わったら、実際にユーザーを削除します。

1. ユーザーアカウントのみ削除する(デフォルト)

# ユーザーを削除(ホームディレクトリは残る) # userdel testuser

この場合、/etc/passwd、/etc/shadow、/etc/group からユーザー情報は削除されますが、ホームディレクトリ(/home/testuser)やメールスプール(/var/mail/testuser)はそのまま残ります

2. ホームディレクトリごと削除する(-r オプション)

# ユーザーとホームディレクトリ・メールスプールを一括削除 # userdel -r testuser

-r オプションを付けると、ホームディレクトリとメールスプール(/var/mail/ユーザー名)も同時に削除されます。

実務では -r を付けるのが基本です。-r なしで削除すると、ホームディレクトリがオーナー不明のまま残り続け、ディスク容量を圧迫したり、セキュリティリスクになります。

3. 強制的に削除する(-f オプション)

# ユーザーがログイン中でも強制削除 # userdel -rf testuser

-f オプションは、以下の状況でも強制的にユーザーを削除します。

・ユーザーがログイン中でも削除を実行
・ホームディレクトリが他ユーザーと共有されていても削除
・メールスプールが存在しなくてもエラーにしない

【注意】-f は最後の手段です。ログイン中のユーザーを強制削除すると、実行中のプロセスが予期しない動作をする可能性があります。通常は後述の「安全な削除手順」に従ってください。

削除後の確認方法

ユーザーを削除したら、正しく削除されたことを必ず確認します。

1. ユーザーが存在しないことを確認する

# idコマンドで確認 # id testuser id: 'testuser': no such user # /etc/passwdを確認 # grep testuser /etc/passwd # (何も表示されなければ削除済み)

2. ホームディレクトリが削除されたことを確認する

# ホームディレクトリの存在を確認 # ls -la /home/testuser ls: cannot access '/home/testuser': No such file or directory

3. /etc/shadow・/etc/groupも確認する

# shadowファイルを確認 # grep testuser /etc/shadow # (何も表示されなければOK) # グループファイルを確認 # grep testuser /etc/group # (何も表示されなければOK)

【実務Tips】安全なユーザー削除の手順

本番サーバーでユーザーを削除する場合は、いきなり userdel を実行するのではなく、以下の手順で進めるのが安全です。

1. まずアカウントをロックする(usermod -L)

削除前にアカウントをロックして、ログインできない状態にします。これにより、削除作業中に対象ユーザーが新たにログインしてくるのを防げます。

# アカウントをロック # usermod -L testuser # ロックされたことを確認(パスワードの先頭に ! が付く) # grep testuser /etc/shadow testuser:!$6$xxxx...:19500:0:99999:7:::

2. 実行中のプロセスを終了する

# 対象ユーザーの全プロセスを確認 # ps -u testuser # 対象ユーザーの全プロセスを終了 # killall -u testuser # プロセスが終了したことを確認 # ps -u testuser # (何も表示されなければOK)

3. crontabを確認・削除する

対象ユーザーのcrontabが残っていると、ユーザー削除後にジョブが実行できずエラーログが出続ける場合があります。

# 対象ユーザーのcrontabを確認 # crontab -l -u testuser # crontabを削除 # crontab -r -u testuser

4. バックアップを取得してから削除する

# ホームディレクトリをバックアップ # tar czf /backup/testuser_$(date +%Y%m%d).tar.gz /home/testuser # ユーザーを削除(ホームディレクトリ・メールスプールも削除) # userdel -r testuser

トラブルシュート・エラー対処

userdelで削除されないもの~孤立ファイルの対処

userdel -r で削除されるのは、ホームディレクトリとメールスプールだけです。それ以外の場所(/tmp、/var/log、/opt など)に対象ユーザーが作成したファイルがあっても、自動では削除されません。

これらは「孤立ファイル」(オーナーが存在しないファイル)としてシステムに残り続けます。

# オーナーが存在しないファイルを検索 # find / -nouser -ls 2>/dev/null # 特定のUIDが所有していたファイルを検索 # find / -uid 1001 -ls 2>/dev/null

孤立ファイルが見つかった場合は、内容を確認した上で、不要であれば削除してください。セキュリティの観点からも、オーナー不明のファイルを放置するのは望ましくありません。

「userdel: user xxx is currently used by process」の対処法

# userdel testuser userdel: user testuser is currently used by process 2345

このエラーは、削除対象のユーザーがプロセスを実行中の場合に発生します。

対処法:対象ユーザーのプロセスを特定して終了させてから、再度 userdel を実行します。

# プロセスを確認 # ps -u testuser PID TTY TIME CMD 2345 pts/1 00:00:00 bash # プロセスを終了 # kill 2345 # または対象ユーザーの全プロセスを一括終了 # killall -u testuser # 再度削除を実行 # userdel -r testuser

「userdel: cannot lock /etc/passwd」の対処法

# userdel testuser userdel: cannot lock /etc/passwd; try again later.

このエラーは、別のプロセスが /etc/passwd をロックしている場合に発生します。useradd や usermod など、他のユーザー管理コマンドが同時に実行されていることが原因です。

対処法:

# ロックファイルが残っていないか確認 # ls -la /etc/.pwd.lock # ロックファイルが残っている場合は削除(他にuseradd等が動いていないことを確認してから) # rm /etc/.pwd.lock # 再度削除を実行 # userdel -r testuser

/etc/.pwd.lock を削除する前に、必ず他のユーザー管理コマンドが実行中でないことを確認してください。確認せずに削除すると、/etc/passwd の整合性が壊れる危険があります。

ログイン中のユーザーを削除する方法

ログイン中のユーザーをどうしても削除しなければならない場合は、以下の手順で進めます。

# ログイン中のユーザーを確認 # who | grep testuser testuser pts/1 2025-03-20 10:00 (192.168.1.100) # 対象ユーザーの全プロセスを終了(ログインセッションも含む) # killall -u testuser # 少し待ってからユーザーを削除 # userdel -r testuser

-f オプションで強制削除することもできますが、前述のとおりリスクがあるため、まずはプロセスを終了させる方法を試してください。

本記事のまとめ

やりたいこと コマンド
ユーザーアカウントのみ削除 userdel ユーザー名
ホームディレクトリごと削除 userdel -r ユーザー名
強制削除(ログイン中でも) userdel -rf ユーザー名
削除前にユーザー情報を確認 id ユーザー名
削除前にプロセスを確認 ps -u ユーザー名
削除前にアカウントをロック usermod -L ユーザー名
対象ユーザーのcrontabを削除 crontab -r -u ユーザー名
対象ユーザーの全プロセスを終了 killall -u ユーザー名
オーナー不明の孤立ファイルを検索 find / -nouser -ls
削除されたことを確認 id ユーザー名

ユーザー削除でホームディレクトリの取り扱いを間違えていませんか?

コマンドの使い方を一つひとつ覚えていくのは時間がかかります。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

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

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。