[Linux] ユーザーを削除する - userdel

Linuxで作成済みのユーザーを削除するにはuserdelコマンドを実行するだけです。

$ sudo userdel -r (ユーザー名)

なお特に確認は求められず、Enterキーを押した瞬間削除されますので実行には十分気をつけてください。

オプション

-r

-rオプションを付けると、削除対象のユーザーのホームディレクトリも合わせて消されます。ホームディレクリ以外の場所にあるこのユーザーのファイルは削除されないので、手動で見つけて消す必要があります。

もし指定し忘れた場合は、sudo rm -r /home/fooなどで消せばOKです。

注意事項

ユーザーが削除されないケース

また以下に該当する場合はユーザーの削除が実行されずエラーとなります。

  • 削除対象ユーザーが存在しない
  • 削除対象ユーザーがログインしている
  • 削除対象ユーザーが何らかのプロセスを実行している(バックグラウンド含む)
    • killする必要があります

当然と言えば当然ですが、存在しないものを消すことはできません。

$ sudo userdel -r foo
userdel: ユーザ 'foo' は存在しません

例えばApacheを実行中のサーバでapacheユーザーを削除しようとすると以下のようなエラーが表示されます。何らかの方法ですべてのプロセスを停止する必要があります。

$ sudo userdel apache
userdel: ユーザ apache は現在ログイン中です

同時に複数ユーザーは指定できない

ユーザーを削除する行為は非常にデリケートなため、同時に複数のユーザーを指定することはできません。実際に指定するとUsageが表示され実行されません。

$ sudo userdel -r foo bar
Usage: userdel [options] LOGIN

Options:
  -f, --force                   force removal of files,
                                even if not owned by user
  -h, --help                    display this help message and exit
  -r, --remove                  remove home directory and mail spool
  -Z, --selinux-user            remove SELinux user from SELinux user mapping