USERDEL(8) دستورهای مدیریت سیستم (System Management Commands) USERDEL(8)

userdel - حذف حساب کاربری و فایل‌های مرتبط

userdel [options] LOGIN

دستور userdel یک ابزار سطح پایین برای حذف کاربران است. در دبیان، مدیران سیستم معمولاً باید به جای آن از deluser(8) استفاده کنند.

دستور userdel فایل‌های حساب‌های سیستم را اصلاح کرده و تمام مدخل‌هایی را که به نام کاربری LOGIN اشاره دارند حذف می‌کند. کاربر مشخص‌شده باید وجود داشته باشد.

گزینه‌هایی که برای دستور userdel اعمال می‌شوند عبارتند از:

-f, --force

این گزینه حذف حساب کاربری را تحمیل می‌کند، حتی اگر کاربر همچنان به سیستم وارد شده باشد (logged in). این گزینه همچنین userdel را مجبور می‌کند دایرکتوری خانگی و صف دریافت ایمیل (mail spool) کاربر را حذف کند، حتی اگر کاربر دیگری از همین دایرکتوری خانگی استفاده کند یا اگر مالک صف دریافت ایمیل، کاربر مشخص‌شده نباشد. اگر USERGROUPS_ENAB در /etc/login.defs روی yes تنظیم شده باشد و گروهی با همان نام کاربر حذف‌شده وجود داشته باشد، آن گروه نیز حذف خواهد شد، حتی اگر همچنان گروه اصلی کاربر دیگری باشد.

نکته: این گزینه خطرناک است و ممکن است سیستم شما را در وضعیتی ناسازگار رها کند.

-h, --help

نمایش پیام راهنما و خروج.

-r, --remove

فایل‌های موجود در دایرکتوری خانگی کاربر همراه با خود دایرکتوری خانگی و صف دریافت ایمیل کاربر حذف خواهند شد. فایل‌های قرارگرفته در سایر فایل‌سیستم‌ها باید به صورت دستی جستجو و حذف شوند.

صف دریافت ایمیل با متغیر MAIL_DIR در فایل login.defs تعریف می‌شود.

-R, --root CHROOT_DIR

اعمال تغییرات در دایرکتوری CHROOT_DIR و استفاده از فایل‌های پیکربندی از دایرکتوری CHROOT_DIR. تنها مسیرهای مطلق پشتیبانی می‌شوند.

-P, --prefix PREFIX_DIR

اعمال تغییرات در دایرکتوری PREFIX_DIR و استفاده از فایل‌های پیکربندی از دایرکتوری PREFIX_DIR. این گزینه chroot نمی‌کند و برای آماده‌سازی یک هدف کامپایل متقاطع (cross-compilation) در نظر گرفته شده است. برخی محدودیت‌ها: کاربران/گروه‌های NIS و LDAP بررسی نمی‌شوند. احراز هویت PAM از فایل‌های میزبان استفاده می‌کند. هیچ پشتیبانی از SELINUX وجود ندارد.

-Z, --selinux-user

حذف هرگونه نگاشت کاربر SELinux برای نام کاربری مربوطه.

متغیرهای پیکربندی زیر در /etc/login.defs رفتار این ابزار را تغییر می‌دهند:

MAIL_DIR (string)

دایرکتوری صف دریافت ایمیل (mail spool). این دایرکتوری برای دستکاری صندوق پستی در زمانی که حساب کاربری متناظر با آن اصلاح یا حذف می‌شود، مورد نیاز است. در صورت مشخص نشدن، از یک مقدار پیش‌فرض در زمان کامپایل استفاده می‌شود. پارامتر CREATE_MAIL_SPOOL در /etc/default/useradd تعیین می‌کند که آیا صف ایمیل باید ایجاد شود یا خیر.

MAIL_FILE (string)

مکان فایل‌های صف ایمیل کاربران را نسبت به دایرکتوری خانگی آن‌ها تعریف می‌کند.

متغیرهای MAIL_DIR و MAIL_FILE توسط useradd، usermod و userdel برای ایجاد، انتقال، یا حذف صف دریافت ایمیل کاربر استفاده می‌شوند.

MAX_MEMBERS_PER_GROUP (number)

حداکثر اعضا در هر مدخل گروه. هنگامی که به حداکثر رسید، یک مدخل گروه جدید (خط جدید) در /etc/group آغاز می‌شود (با همان نام، همان رمز عبور و همان GID).

مقدار پیش‌فرض 0 است، به این معنی که هیچ محدودیتی در تعداد اعضای یک گروه وجود ندارد.

این ویژگی (گروه تفکیک‌شده) اجازه می‌دهد طول خطوط در فایل گروه محدود شود. این برای اطمینان از اینکه خطوط گروه‌های NIS طولانی‌تر از ۱۰۲۴ نویسه نباشند مفید است.

اگر نیاز به اعمال چنین محدودیتی دارید، می‌توانید از 25 استفاده کنید.

توجه: گروه‌های تفکیک‌شده ممکن است توسط همه ابزارها پشتیبانی نشوند (حتی در مجموعه ابزار Shadow). نباید از این متغیر استفاده کنید مگر اینکه واقعاً به آن نیاز داشته باشید.

USERDEL_CMD (string)

در صورت تعریف، این دستور هنگام حذف یک کاربر اجرا می‌شود. این اسکریپت باید هرگونه وظایف at/cron/print و غیره متعلق به کاربری که باید حذف شود (به عنوان اولین آرگومان ارسال می‌شود) را حذف کند.

کد خروجی اسکریپت در نظر گرفته نمی‌شود.

در اینجا یک اسکریپت نمونه آمده است که وظایف cron، at و چاپ کاربر را حذف می‌کند:

#! /bin/sh
# Check for the required argument.
if [ $# != 1 ]; then
	echo "Usage: $0 username"
	exit 1
fi
# Remove cron jobs.
crontab -r -u $1
# Remove at jobs.
# Note that it will remove any jobs owned by the same UID,
# even if it was shared by a different username.
AT_SPOOL_DIR=/var/spool/cron/atjobs
find $AT_SPOOL_DIR -name "[^.]*" -type f -user $1 -delete \;
# Remove print jobs.
lprm $1
# All done.
exit 0

USERGROUPS_ENAB (boolean)

اگر روی 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

شناسه‌های گروه تابعه (subordinate group IDs) برای هر کاربر.

/etc/subuid

شناسه‌های کاربر تابعه (subordinate user IDs) برای هر کاربر.

دستور userdel با مقادیر زیر خارج می‌شود:

0

موفقیت

1

عدم امکان به‌روزرسانی فایل گذرواژه

2

نحو نامعتبر دستور

6

کاربر مشخص‌شده وجود ندارد

8

کاربر در حال حاضر به سیستم وارد شده است

10

عدم امکان به‌روزرسانی فایل گروه

12

عدم امکان حذف دایرکتوری خانگی

دستور userdel به شما اجازه نخواهد داد حسابی را حذف کنید اگر پردازه‌های در حال اجرایی متعلق به این حساب وجود داشته باشند. در این حالت، ممکن است مجبور شوید آن پردازه‌ها را خاتمه دهید (kill) یا گذرواژه یا حساب کاربر را قفل کنید و بعداً حساب را حذف نمایید. گزینه -f می‌تواند حذف این حساب را تحمیل کند.

شما باید تمام فایل‌سیستم‌ها را به صورت دستی بررسی کنید تا مطمئن شوید هیچ فایلی در مالکیت این کاربر باقی نمانده است.

شما نمی‌توانید هیچ‌یک از مشخصه‌های NIS را روی یک کلاینت NIS حذف کنید. این کار باید روی سرور NIS انجام شود.

اگر USERGROUPS_ENAB در /etc/login.defs روی yes تعریف شده باشد، userdel گروه هم‌نام با کاربر را حذف خواهد کرد. برای جلوگیری از ناهماهنگی در پایگاه‌های داده passwd و group، userdel بررسی خواهد کرد که این گروه به عنوان گروه اصلی برای کاربر دیگری استفاده نشده باشد، و در غیر این صورت فقط هشدار می‌دهد بدون اینکه گروه را حذف کند. گزینه -f می‌تواند حذف این گروه را تحمیل کند.

نوشته شده توسط Julianne Frances Haugh.

برای گزارش باگ‌ها به سامانه پیگیری باگ توزیع خود یا به پروژه shadow-utils در آدرس زیر مراجعه کنید:
https://github.com/shadow-maint/shadow/issues

حق نشر © 1991 - 1994 Julianne Frances Haugh.
حق نشر © 1996 - 2000 Marek Michałkiewicz.
حق نشر © 2000 - 2006 Tomasz Kłoczko.
حق نشر © 2007 - 2025 Nicolas François.

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).

12/14/2025 shadow-utils 4.13