userdel - ユーザーアカウントと関連ファイルを削除します
構文
userdel [オプション] LOGIN
説明
userdel は、ユーザーを削除するための低レベルのユーティリティです。Debian では、管理者は通常 [deluser]({filename}../../deluser)(8) を使用する必要があります。
userdel コマンドは、システムアカウントファイルを変更し、ユーザー名 LOGIN を参照するすべてのエントリを削除します。指定されたユーザーは存在している必要があります。
オプション
userdel コマンドに適用されるオプションは次のとおりです。
-f, --force
このオプションは、ユーザーアカウントおよびその他の要求されたアクションの削除を強制し、安全チェックをスキップします。
注: このオプションは危険であり、システムの状態が不整合になる可能性があります。
-h, --help
ヘルプメッセージを表示して終了します。
-r, --remove
ユーザーのホームディレクトリ内のファイルは、ホームディレクトリ自体とユーザーのメールスプールとともに削除されます。他のファイルシステムにあるファイルは、手動で検索して削除する必要があります。
メールスプールは、login.defs ファイルの MAIL_DIR 変数で定義されます。
-R, --root CHROOT_DIR
CHROOT_DIR ディレクトリ内の変更を適用し、CHROOT_DIR ディレクトリからの構成ファイルを使用します。絶対パスのみがサポートされます。
-P, --prefix PREFIX_DIR
変更を PREFIX_DIR ディレクトリに適用し、PREFIX_DIR ディレクトリからの構成ファイルを使用します。このオプションは chroot しません。クロスコンパイルターゲットの準備を目的としています。いくつかの制限があります。NIS および LDAP ユーザー/グループは検証されません。PAM 認証はホストファイルを使用します。SELinux のサポートはありません。
-Z, --selinux-user
ユーザーのログインに関する SELinux ユーザーマッピングを削除します。
構成
/etc/login.defs の次の構成変数は、このツールの動作を変更します。
MAIL_DIR (文字列)
メールスプールディレクトリ。これは、対応するユーザーアカウントが変更または削除されたときに、メールボックスを操作するために必要です。指定されていない場合は、コンパイル時のデフォルトが使用されます。/etc/default/useradd の CREATE_MAIL_SPOOL パラメータは、メールスプールを作成するかどうかを決定します。
MAIL_FILE (文字列)
ユーザーのホームディレクトリを基準とした、ユーザーのメールスプールファイルの場所を定義します。
MAIL_DIR および MAIL_FILE 変数は、useradd、usermod、および userdel によって、ユーザーのメールスプールを作成、移動、または削除するために使用されます。
MAX_MEMBERS_PER_GROUP (数値)
グループエントリあたりの最大メンバー数。最大値に達すると、/etc/group に同じ名前、同じパスワード、および同じ GID の新しいグループエントリ(行)が開始されます。
デフォルト値は 0 であり、グループ内のメンバー数に制限はありません。
この機能(グループの分割)により、グループファイル内の行の長さを制限できます。これは、NIS グループの行が 1024 文字を超えないようにするために役立ちます。
制限を適用する必要がある場合は、25 を使用できます。
注: 分割グループは、すべてのツール(Shadow ツールスイート内でも)でサポートされているわけではありません。本当に必要がない限り、この変数は使用しないでください。
USERDEL_CMD (文字列)
定義されている場合、このコマンドはユーザーを削除するときに実行されます。削除対象のユーザー(最初の引数として渡される)が所有する at/cron/print ジョブなどを削除する必要があります。
スクリプトの戻り値は考慮されません。
次に、ユーザーの cron、at、および print ジョブを削除するスクリプトの例を示します。
#! /bin/sh
# 必要な引数の確認。
if [ $# != 1 ]; then
echo "Usage: $0 username"
exit 1
fi
# cron ジョブの削除。
crontab -r -u $1
# at ジョブの削除。
# 同じ UID が所有しているすべてのジョブを削除することに注意してください。
# たとえそれが別のユーザー名によって共有されていたとしても。
AT_SPOOL_DIR=/var/spool/cron/atjobs
find $AT_SPOOL_DIR -name "[^.]*" -type f -user $1 -delete \;
# print ジョブの削除。
lprm $1
# 完了。
exit 0
USERGROUPS_ENAB (ブール値)
yes に設定されている場合、userdel は、メンバーがいないユーザーのグループを削除し、useradd はデフォルトでユーザー名と同じ名前のグループを作成します。
ファイル
/etc/group
グループアカウント情報。
/etc/login.defs
Shadow パスワードスイートの構成。
/etc/passwd
ユーザーアカウント情報。
/etc/shadow
セキュアなユーザーアカウント情報。
/etc/shadow-maint/userdel-pre.d/*, /etc/shadow-maint/userdel-post.d/*
ユーザー削除時に実行する run-part ファイル。環境変数 ACTION には userdel が設定され、SUBJECT にはユーザー名が設定されます。userdel-pre.d は、ユーザー削除前に実行されます。userdel-post.d は、ユーザー削除後に実行されます。スクリプトがゼロ以外の値で終了した場合、実行は停止します。
/etc/subgid
ユーザーごとのサブグループ ID。
/etc/subuid
ユーザーごとのサブユーザー ID。
終了値
userdel コマンドは、次の値を返して終了します。
0 成功
1 パスワードファイルを更新できません
2 無効なコマンド構文
6 指定されたユーザーが存在しません
8 ユーザーが現在ログインしています
10 グループファイルを更新できません
12 ホームディレクトリを削除できません
注意点
userdel は、このアカウントに属する実行中のプロセスがある場合、アカウントの削除を許可しません。その場合、これらのプロセスを停止するか、ユーザーのパスワードまたはアカウントをロックして、後でアカウントを削除する必要があります。-f オプションを使用すると、このアカウントの削除を強制できます。
すべてのファイルシステムを手動で確認して、このユーザーが所有するファイルが残っていないことを確認する必要があります。
NIS クライアントで NIS 属性を削除することはできません。これは、NIS サーバーで実行する必要があります。
/etc/login.defs の USERGROUPS_ENAB が yes に定義されている場合、userdel はユーザーと同じ名前のグループを削除します。passwd データベースと group データベースの整合性を保つために、userdel はこのグループが別のユーザーのプライマリグループとして使用されていないことを確認し、そうでない場合は警告を発してグループを削除します。-f オプションを使用すると、このグループの削除を強制できます。
関連項目
chfn(1), chsh(1), passwd(1), login.defs(5), gpasswd(8), groupadd(8), groupdel(8), groupmod(8), subgid(5), subuid(5), useradd(8), usermod(8).