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

newusers - به‌روزرسانی و ایجاد دسته‌ای کاربران

newusers [گزینه‌ها] [فایل]

دستور newusers یک فایل (یا ورودی استاندارد به صورت پیش‌فرض) را می‌خواند و از این اطلاعات برای به‌روزرسانی مجموعه‌ای از کاربران موجود یا ایجاد کاربران جدید استفاده می‌کند. هر خط همان قالبی را دارد که در فایل استاندارد گذرواژه مشخص شده است (نگاه کنید به passwd(5))، به استثنای مواردی که در ادامه توضیح داده شده است:

pw_name:pw_passwd:pw_uid:pw_gid:pw_gecos:pw_dir:pw_shell

pw_name

این نام کاربری است.

می‌تواند نام یک کاربر جدید یا نام یک کاربر موجود باشد (یا کاربری که قبلاً توسط newusers ایجاد شده است). در صورت وجود کاربر، اطلاعات کاربر تغییر داده خواهد شد، در غیر این صورت یک کاربر جدید ایجاد می‌شود.

pw_passwd

اگر این فیلد خالی نباشد، رمزگذاری شده و به عنوان مقدار جدید گذرواژه رمزگذاری‌شده استفاده خواهد شد.

pw_uid

این فیلد برای تعیین شناسه کاربری (UID) کاربر استفاده می‌شود.

اگر فیلد خالی باشد، یک شناسه کاربری جدید (استفاده‌نشده) به طور خودکار توسط newusers تعیین خواهد شد.

اگر این فیلد شامل یک عدد باشد، این عدد به عنوان شناسه کاربری (UID) استفاده می‌شود.

اگر این فیلد شامل نام یک کاربر موجود باشد (یا نام کاربری که قبلاً توسط newusers ایجاد شده است)، شناسه کاربری (UID) کاربر مشخص‌شده استفاده خواهد شد.

اگر شناسه کاربری (UID) یک کاربر موجود تغییر کند، مالکیت فایل‌های کاربر باید به صورت دستی اصلاح شود.

pw_gid

این فیلد برای تعیین شناسه گروه اصلی (GID) کاربر استفاده می‌شود.

اگر این فیلد شامل نام یک گروه موجود باشد (یا گروهی که قبلاً توسط newusers ایجاد شده است)، شناسه گروه (GID) این گروه به عنوان شناسه گروه اصلی کاربر استفاده خواهد شد.

اگر این فیلد یک عدد باشد، این عدد به عنوان شناسه گروه اصلی کاربر استفاده خواهد شد. اگر هیچ گروهی با این GID وجود نداشته باشد، یک گروه جدید با این GID و نام کاربر ایجاد خواهد شد.

اگر این فیلد خالی باشد، یک گروه جدید با نام کاربر ایجاد می‌شود و یک GID به طور خودکار توسط newusers تعیین می‌گردد تا به عنوان شناسه گروه اصلی کاربر و همچنین به عنوان GID برای گروه جدید استفاده شود.

اگر این فیلد شامل نام گروهی باشد که وجود ندارد (و قبلاً نیز توسط newusers ایجاد نشده است)، یک گروه جدید با نام مشخص‌شده ایجاد می‌شود و یک GID به طور خودکار توسط newusers تعیین خواهد شد تا به عنوان شناسه گروه اصلی کاربر و GID برای گروه جدید استفاده شود.

pw_gecos

این فیلد در بخش GECOS کاربر کپی می‌شود.

pw_dir

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

اگر این فیلد دایرکتوری موجودی را مشخص نکند، دایرکتوری مشخص‌شده با تنظیم مالکیت برای کاربر در حال ایجاد یا به‌روزرسانی و گروه اصلی آن، ایجاد می‌شود. توجه داشته باشید که newusers دایرکتوری‌های والد دایرکتوری خانگی کاربر جدید را ایجاد نمی‌کند. اگر دایرکتوری‌های والد وجود نداشته باشند، دستور newusers در ایجاد دایرکتوری خانگی ناموفق خواهد بود و پیامی به stderr ارسال می‌کند تا کاربر را از این شکست مطلع سازد. دستور newusers در صورت عدم موفقیت در ایجاد دایرکتوری خانگی، متوقف نمی‌شود یا وضعیت شکست را به پوستهٔ فراخوان بازنمی‌گرداند؛ بلکه پردازش دستهٔ کاربران جدید مشخص‌شده را ادامه می‌دهد.

اگر دایرکتوری خانگی یک کاربر موجود تغییر داده شود، newusers محتوای دایرکتوری قدیمی را به مکان جدید منتقل یا کپی نمی‌کند. این کار باید به صورت دستی انجام شود.

pw_shell

این فیلد پوستهٔ کاربر را تعیین می‌کند. هیچ بررسی خاصی روی این فیلد انجام نمی‌شود.

دستور newusers ابتدا تلاش می‌کند تا تمام کاربران مشخص‌شده را ایجاد کرده یا تغییر دهد، و سپس این تغییرات را در پایگاه‌های داده کاربر یا گروه بنویسد. اگر خطایی رخ دهد (به جز در نوشتن نهایی در پایگاه‌های داده)، هیچ تغییری در پایگاه‌های داده ثبت نمی‌شود.

در طول این گذر اول، کاربران با یک گذرواژه قفل‌شده ایجاد می‌شوند (و گذرواژه‌ها برای کاربرانی که ایجاد نشده‌اند تغییر نمی‌کند). یک گذر دوم برای به‌روزرسانی گذرواژه‌ها با استفاده از PAM استفاده می‌شود. عدم موفقیت در به‌روزرسانی یک گذرواژه گزارش می‌شود، اما مانع از به‌روزرسانی سایر گذرواژه‌ها نخواهد شد.

این دستور برای استفاده در محیط‌های سیستمی بزرگ طراحی شده است که در آن‌ها حساب‌های کاربری زیادی در یک زمان واحد به‌روزرسانی می‌شوند.

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

--badname 

اجازه دادن به نام‌هایی که با استانداردها مطابقت ندارند.

-h, --help

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

-r, --system

ایجاد یک حساب سیستمی.

کاربران سیستمی بدون اطلاعات انقضا (aging) در /etc/shadow ایجاد خواهند شد، و شناسه‌های عددی آن‌ها به جای UID_MIN-UID_MAX از محدودهٔ SYS_UID_MIN-SYS_UID_MAX تعریف‌شده در login.defs انتخاب می‌شود (و همچنین معادل‌های GID آن‌ها برای ایجاد گروه‌ها).

-R, --root CHROOT_DIR

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

فایل ورودی باید محافظت شود زیرا شامل گذرواژه‌های رمزگذاری‌نشده است.

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

GID_MAX (عدد)، GID_MIN (عدد)

محدوده شناسه‌های گروه مورد استفاده برای ایجاد گروه‌های عادی توسط useradd، groupadd یا newusers.

مقدار پیش‌فرض برای GID_MIN (به ترتیب GID_MAX) برابر با 1000 (به ترتیب 60000) است.

HOME_MODE (عدد)

حالت دسترسی (mode) برای دایرکتوری‌های خانگی جدید. در صورت عدم تعیین، از UMASK برای ایجاد حالت دسترسی استفاده می‌شود.

دستورات useradd و newusers از این مقدار برای تنظیم حالت دسترسی دایرکتوری خانگی که ایجاد می‌کنند استفاده می‌نمایند.

MAX_MEMBERS_PER_GROUP (عدد)

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

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

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

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

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

PASS_MAX_DAYS (عدد)

حداکثر تعداد روزهایی که یک گذرواژه می‌تواند مورد استفاده قرار گیرد. اگر عمر گذرواژه بیشتر از این مقدار باشد، تغییر گذرواژه اجباری خواهد شد. در صورت عدم تعیین، مقدار 1- در نظر گرفته می‌شود (که این محدودیت را غیرفعال می‌کند).

PASS_WARN_AGE (عدد)

تعداد روزهای هشداری که قبل از انقضای گذرواژه داده می‌شود. مقدار صفر یعنی هشدار فقط در روز انقضا داده شود، مقدار 1- یعنی هیچ هشداری داده نشود. در صورت عدم تعیین، هیچ هشداری ارائه نخواهد شد.

SUB_GID_MIN (عدد)، SUB_GID_MAX (عدد)، SUB_GID_COUNT (عدد)

اگر /etc/subuid وجود داشته باشد، دستورات useradd و newusers (مگر اینکه کاربر از قبل دارای شناسه‌های گروه زیرمجموعه باشد) تعداد SUB_GID_COUNT شناسه گروه استفاده‌نشده را از محدوده SUB_GID_MIN تا SUB_GID_MAX برای هر کاربر جدید اختصاص می‌دهند.

مقادیر پیش‌فرض برای SUB_GID_MIN، SUB_GID_MAX و SUB_GID_COUNT به ترتیب 100000، 600100000 و 65536 هستند.

SUB_GID_DETERMINISTIC (بولی)

اگر روی yes تنظیم شود، دستورات useradd، usermod و newusers به جای جستجو برای محدوده آزاد بعدی، محدوده‌های GID زیرمجموعه را به صورت قطعی (deterministic) بر اساس UID کاربر محاسبه خواهند کرد. فرمول مورد استفاده عبارت است از:
start = SUB_GID_MIN + ((UID - UID_MIN) * SUB_GID_COUNT)
end   = start + SUB_GID_COUNT - 1

این ویژگی تضمین می‌کند که یک UID یکسان همواره محدودهٔ GID زیرمجموعه یکسانی را در هر سیستمی دریافت کند، که آن را برای محیط‌هایی با مدیریت متمرکز کاربران (مانند LDAP، NIS و غیره) یا شناسه‌های کاربری (UID) همگام‌سازی‌شده در سراسر سیستم‌ها مناسب می‌سازد.

اگر SUB_GID_DETERMINISTIC فعال باشد، می‌توانید از usermod --add-subgids -S برای تولید subgidهای قطعی استفاده کنید.

هشدار: از آنجا که از UID_MIN برای محاسبه محدوده‌ها استفاده می‌شود، هرگونه تغییر در UID_MIN محدوده‌های محاسبه‌شده را تغییر خواهد داد. از آنجا که از SUB_GID_COUNT برای محاسبه محدوده‌ها استفاده می‌شود، هرگونه تغییر در SUB_GID_COUNT محدوده‌های محاسبه‌شده را تغییر خواهد داد. کاربرانی با شناسه‌های کمتر از UID_MIN با SUB_GID_DETERMINISTIC ناسازگار هستند، اما همچنان می‌توان آن‌ها را به صورت دستی تنظیم کرد.

هشدار: تخصیص قطعی و خطی (پیش‌فرض) را روی یک سیستم یا میان سیستم‌هایی که /etc/subgid را از طریق ذخیره‌سازی تحت شبکه (NFS و غیره) به اشتراک می‌گذارند، با یکدیگر ترکیب نکنید. ترکیب روش‌های تخصیص موجب تداخل و همپوشانی در محدوده‌های شناسه زیرمجموعه خواهد شد .

مقدار پیش‌فرض برای SUB_GID_DETERMINISTIC برابر با no است.

با پیکربندی پیش‌فرض (UID_MIN=1000، SUB_GID_MIN=100000، SUB_GID_COUNT=65536):

UID محاسبه محدوده GID زیرمجموعه
1000 100000 + ((1000-1000) * 65536) 100000-165535
1001 100000 + ((1001-1000) * 65536) 165536-231071
1002 100000 + ((1002-1000) * 65536) 231072-296607
1100 100000 + ((1100-1000) * 65536) 6653600-6719135

هنگام برنامه‌ریزی برای تخصیص شناسه‌های زیرمجموعه، حداکثر تعداد کاربرانی را که این فضا می‌تواند در خود جای دهد محاسبه کنید:

capacity = (SUB_GID_MAX - SUB_GID_MIN) / SUB_GID_COUNT

با مقادیر پیش‌فرض: (600100000 - 100000) / 65536 ≈ 9155 کاربر.

برای محیط‌های با تراکم بالا همراه با کاربران زیاد و تخصیص‌های کوچک‌تر:

SUB_GID_COUNT  4096
SUB_GID_MIN    100000
SUB_GID_MAX    10000000

این مقادیر حاصل می‌دهند: (10000000 - 100000) / 4096 ≈ 2417 کاربر.

UNSAFE_SUB_GID_DETERMINISTIC_WRAP (بولی)

هشدار: خطر امنیتی - ممکن است باعث همپوشانی محدوده‌ها و ارتقای امتیازات شود!

تنها زمانی مؤثر است که SUB_GID_DETERMINISTIC روی yes تنظیم شده باشد.

هنگامی که روی yes (حالت WRAP) تنظیم شود، به محاسبه محدوده قطعی اجازه می‌دهد در صورتی که یک UID از فضای پیکربندی‌شده شناسه زیرمجموعه سرریز کند، با استفاده از محاسبات پیمانه‌ای (modulo arithmetic) دور بزند (wrap around). در این حالت با فضای شناسه زیرمجموعه مانند یک بافر حلقوی (ring buffer) رفتار می‌شود.

هشدار: همپوشانی محدوده‌ها می‌تواند منجر به گریز از کانتینر (container escape) و ارتقای امتیازات شود. به عنوان مثال، با SUB_GID_MIN=100000، SUB_GID_MAX=200000 و SUB_GID_COUNT=65536، کاربر A با شناسه (UID 1000) محدوده [100000, 165535] را دریافت می‌کند و کاربر B با شناسه (UID 1001) دور می‌زند و با کاربر A همپوشانی پیدا می‌کند. اکنون کانتینر کاربر B می‌تواند به فایل‌های کانتینرهای کاربر A دسترسی داشته باشد.

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

هنگامی که روی no (پیش‌فرض) تنظیم شود، هرگونه سرریز حسابی یا تجاوز محدوده از SUB_GID_MAX یک خطای قطعی (hard error) خواهد بود. این تضمین‌کننده تخصیص غیرهمپوشان و یکنواخت صعودی است.

مقدار پیش‌فرض برای UNSAFE_SUB_GID_DETERMINISTIC_WRAP برابر با no است.

SUB_UID_MIN (عدد)، SUB_UID_MAX (عدد)، SUB_UID_COUNT (عدد)

اگر /etc/subuid وجود داشته باشد، دستورات useradd و newusers (مگر اینکه کاربر از قبل دارای شناسه‌های کاربری زیرمجموعه باشد) تعداد SUB_UID_COUNT شناسه کاربری استفاده‌نشده را از محدوده SUB_UID_MIN تا SUB_UID_MAX برای هر کاربر جدید اختصاص می‌دهند.

مقادیر پیش‌فرض برای SUB_UID_MIN، SUB_UID_MAX و SUB_UID_COUNT به ترتیب 100000، 600100000 و 65536 هستند.

SUB_UID_DETERMINISTIC (بولی)

اگر روی yes تنظیم شود، دستورات useradd، usermod و newusers به جای جستجو برای محدوده آزاد بعدی، محدوده‌های UID زیرمجموعه را به صورت قطعی (deterministic) بر اساس UID کاربر محاسبه خواهند کرد. فرمول مورد استفاده عبارت است از:
start = SUB_UID_MIN + ((UID - UID_MIN) * SUB_UID_COUNT)
end   = start + SUB_UID_COUNT - 1

این ویژگی تضمین می‌کند که یک UID یکسان همواره محدودهٔ UID زیرمجموعه یکسانی را در هر سیستمی دریافت کند، که آن را برای محیط‌هایی با مدیریت متمرکز کاربران (مانند LDAP، NIS و غیره) یا شناسه‌های کاربری (UID) همگام‌سازی‌شده در سراسر سیستم‌ها مناسب می‌سازد.

اگر SUB_UID_DETERMINISTIC فعال باشد، می‌توانید از usermod --add-subuids -S برای تولید subuidهای قطعی استفاده کنید.

هشدار: از آنجا که از UID_MIN برای محاسبه محدوده‌ها استفاده می‌شود، هرگونه تغییر در UID_MIN محدوده‌های محاسبه‌شده را تغییر خواهد داد. از آنجا که از SUB_UID_COUNT برای محاسبه محدوده‌ها استفاده می‌شود، هرگونه تغییر در SUB_UID_COUNT محدوده‌های محاسبه‌شده را تغییر خواهد داد. کاربرانی با شناسه‌های کمتر از UID_MIN با SUB_UID_DETERMINISTIC ناسازگار هستند، اما همچنان می‌توان آن‌ها را به صورت دستی تنظیم کرد.

هشدار: تخصیص قطعی و خطی (پیش‌فرض) را روی یک سیستم یا میان سیستم‌هایی که /etc/subuid را از طریق ذخیره‌سازی تحت شبکه (NFS و غیره) به اشتراک می‌گذارند، با یکدیگر ترکیب نکنید. ترکیب روش‌های تخصیص موجب تداخل و همپوشانی در محدوده‌های شناسه زیرمجموعه خواهد شد .

مقدار پیش‌فرض برای SUB_UID_DETERMINISTIC برابر با no است.

با پیکربندی پیش‌فرض (UID_MIN=1000، SUB_UID_MIN=100000، SUB_UID_COUNT=65536):

UID محاسبه محدوده UID زیرمجموعه
1000 100000 + ((1000-1000) * 65536) 100000-165535
1001 100000 + ((1001-1000) * 65536) 165536-231071
1002 100000 + ((1002-1000) * 65536) 231072-296607
1100 100000 + ((1100-1000) * 65536) 6653600-6719135

هنگام برنامه‌ریزی برای تخصیص شناسه‌های زیرمجموعه، حداکثر تعداد کاربرانی را که این فضا می‌تواند در خود جای دهد محاسبه کنید:

capacity = (SUB_UID_MAX - SUB_UID_MIN) / SUB_UID_COUNT

با مقادیر پیش‌فرض: (600100000 - 100000) / 65536 ≈ 9155 کاربر.

برای محیط‌های با تراکم بالا همراه با کاربران زیاد و تخصیص‌های کوچک‌تر:

SUB_UID_COUNT  4096
SUB_UID_MIN    100000
SUB_UID_MAX    10000000

این مقادیر حاصل می‌دهند: (10000000 - 100000) / 4096 ≈ 2417 کاربر.

UNSAFE_SUB_UID_DETERMINISTIC_WRAP (بولی)

هشدار: خطر امنیتی - ممکن است باعث همپوشانی محدوده‌ها و ارتقای امتیازات شود!

تنها زمانی مؤثر است که SUB_UID_DETERMINISTIC روی yes تنظیم شده باشد.

هنگامی که روی yes (حالت WRAP) تنظیم شود، به محاسبه محدوده قطعی اجازه می‌دهد در صورتی که یک UID از فضای پیکربندی‌شده شناسه زیرمجموعه سرریز کند، با استفاده از محاسبات پیمانه‌ای (modulo arithmetic) دور بزند (wrap around). در این حالت با فضای شناسه زیرمجموعه مانند یک بافر حلقوی (ring buffer) رفتار می‌شود.

هشدار: همپوشانی محدوده‌ها می‌تواند منجر به گریز از کانتینر (container escape) و ارتقای امتیازات شود. به عنوان مثال، با SUB_UID_MIN=100000، SUB_UID_MAX=200000 و SUB_UID_COUNT=65536، کاربر A با شناسه (UID 1000) محدوده [100000, 165535] را دریافت می‌کند و کاربر B با شناسه (UID 1001) دور می‌زند و با کاربر A همپوشانی پیدا می‌کند. اکنون کانتینر کاربر B می‌تواند به فایل‌های کانتینرهای کاربر A دسترسی داشته باشد.

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

هنگامی که روی no (پیش‌فرض) تنظیم شود، هرگونه سرریز حسابی یا تجاوز محدوده از SUB_UID_MAX یک خطای قطعی (hard error) خواهد بود. این تضمین‌کننده تخصیص غیرهمپوشان و یکنواخت صعودی است.

مقدار پیش‌فرض برای UNSAFE_SUB_UID_DETERMINISTIC_WRAP برابر با no است.

SYS_GID_MAX (عدد)، SYS_GID_MIN (عدد)

محدوده شناسه‌های گروه مورد استفاده برای ایجاد گروه‌های سیستمی توسط useradd، groupadd یا newusers.

مقدار پیش‌فرض برای SYS_GID_MIN (به ترتیب SYS_GID_MAX) برابر با 101 (به ترتیب GID_MIN-1) است.

SYS_UID_MAX (عدد)، SYS_UID_MIN (عدد)

محدوده شناسه‌های کاربر مورد استفاده برای ایجاد کاربران سیستمی توسط useradd یا newusers.

مقدار پیش‌فرض برای SYS_UID_MIN (به ترتیب SYS_UID_MAX) برابر با 101 (به ترتیب UID_MIN-1) است.

UID_MAX (عدد)، UID_MIN (عدد)

محدوده شناسه‌های کاربری مورد استفاده برای ایجاد کاربران عادی توسط useradd یا newusers.

مقدار پیش‌فرض برای UID_MIN (به ترتیب UID_MAX) برابر با 1000 (به ترتیب 60000) است.

UMASK (عدد)

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

دستورات useradd و newusers در صورتی که HOME_MODE تنظیم نشده باشد، از این ماسک برای تنظیم حالت دسترسی دایرکتوری خانگی که ایجاد می‌کنند استفاده می‌نمایند.

همچنین توسط pam_umask به عنوان مقدار پیش‌فرض umask استفاده می‌شود.

/etc/passwd

اطلاعات حساب‌های کاربری.

/etc/shadow

اطلاعات امن حساب‌های کاربری.

/etc/group

اطلاعات گروه‌ها.

/etc/gshadow

اطلاعات امن گروه‌ها.

/etc/login.defs

پیکربندی مجموعه ابزار گذرواژه Shadow.

/etc/pam.d/newusers

پیکربندی PAM برای newusers.

/etc/subgid

شناسه‌های گروه زیرمجموعه برای هر کاربر.

/etc/subuid

شناسه‌های کاربری زیرمجموعه برای هر کاربر.

login.defs(5)، passwd(1)، subgid(5)، subuid(5)، useradd(8).

07/30/2026 shadow-utils 4.20.0