| NEWUSERS(8) | دستورهای مدیریت سیستم (System Management Commands) | NEWUSERS(8) |
نام (NAME)
newusers - بهروزرسانی و ایجاد دستهای کاربران
خلاصه دستور (SYNOPSIS)
newusers [گزینهها] [فایل]
توضیحات (DESCRIPTION)
دستور newusers یک فایل (یا ورودی استاندارد به صورت پیشفرض) را میخواند و از این اطلاعات برای بهروزرسانی مجموعهای از کاربران موجود یا ایجاد کاربران جدید استفاده میکند. هر خط همان قالبی را دارد که در فایل استاندارد گذرواژه مشخص شده است (نگاه کنید به passwd(5))، به استثنای مواردی که در ادامه توضیح داده شده است:
pw_name:pw_passwd:pw_uid:pw_gid:pw_gecos:pw_dir:pw_shell
pw_name
میتواند نام یک کاربر جدید یا نام یک کاربر موجود باشد (یا کاربری که قبلاً توسط newusers ایجاد شده است). در صورت وجود کاربر، اطلاعات کاربر تغییر داده خواهد شد، در غیر این صورت یک کاربر جدید ایجاد میشود.
pw_passwd
pw_uid
اگر فیلد خالی باشد، یک شناسه کاربری جدید (استفادهنشده) به طور خودکار توسط newusers تعیین خواهد شد.
اگر این فیلد شامل یک عدد باشد، این عدد به عنوان شناسه کاربری (UID) استفاده میشود.
اگر این فیلد شامل نام یک کاربر موجود باشد (یا نام کاربری که قبلاً توسط newusers ایجاد شده است)، شناسه کاربری (UID) کاربر مشخصشده استفاده خواهد شد.
اگر شناسه کاربری (UID) یک کاربر موجود تغییر کند، مالکیت فایلهای کاربر باید به صورت دستی اصلاح شود.
pw_gid
اگر این فیلد شامل نام یک گروه موجود باشد (یا گروهی که قبلاً توسط newusers ایجاد شده است)، شناسه گروه (GID) این گروه به عنوان شناسه گروه اصلی کاربر استفاده خواهد شد.
اگر این فیلد یک عدد باشد، این عدد به عنوان شناسه گروه اصلی کاربر استفاده خواهد شد. اگر هیچ گروهی با این GID وجود نداشته باشد، یک گروه جدید با این GID و نام کاربر ایجاد خواهد شد.
اگر این فیلد خالی باشد، یک گروه جدید با نام کاربر ایجاد میشود و یک GID به طور خودکار توسط newusers تعیین میگردد تا به عنوان شناسه گروه اصلی کاربر و همچنین به عنوان GID برای گروه جدید استفاده شود.
اگر این فیلد شامل نام گروهی باشد که وجود ندارد (و قبلاً نیز توسط newusers ایجاد نشده است)، یک گروه جدید با نام مشخصشده ایجاد میشود و یک GID به طور خودکار توسط newusers تعیین خواهد شد تا به عنوان شناسه گروه اصلی کاربر و GID برای گروه جدید استفاده شود.
pw_gecos
pw_dir
اگر این فیلد دایرکتوری موجودی را مشخص نکند، دایرکتوری مشخصشده با تنظیم مالکیت برای کاربر در حال ایجاد یا بهروزرسانی و گروه اصلی آن، ایجاد میشود. توجه داشته باشید که newusers دایرکتوریهای والد دایرکتوری خانگی کاربر جدید را ایجاد نمیکند. اگر دایرکتوریهای والد وجود نداشته باشند، دستور newusers در ایجاد دایرکتوری خانگی ناموفق خواهد بود و پیامی به stderr ارسال میکند تا کاربر را از این شکست مطلع سازد. دستور newusers در صورت عدم موفقیت در ایجاد دایرکتوری خانگی، متوقف نمیشود یا وضعیت شکست را به پوستهٔ فراخوان بازنمیگرداند؛ بلکه پردازش دستهٔ کاربران جدید مشخصشده را ادامه میدهد.
اگر دایرکتوری خانگی یک کاربر موجود تغییر داده شود، newusers محتوای دایرکتوری قدیمی را به مکان جدید منتقل یا کپی نمیکند. این کار باید به صورت دستی انجام شود.
pw_shell
دستور newusers ابتدا تلاش میکند تا تمام کاربران مشخصشده را ایجاد کرده یا تغییر دهد، و سپس این تغییرات را در پایگاههای داده کاربر یا گروه بنویسد. اگر خطایی رخ دهد (به جز در نوشتن نهایی در پایگاههای داده)، هیچ تغییری در پایگاههای داده ثبت نمیشود.
در طول این گذر اول، کاربران با یک گذرواژه قفلشده ایجاد میشوند (و گذرواژهها برای کاربرانی که ایجاد نشدهاند تغییر نمیکند). یک گذر دوم برای بهروزرسانی گذرواژهها با استفاده از PAM استفاده میشود. عدم موفقیت در بهروزرسانی یک گذرواژه گزارش میشود، اما مانع از بهروزرسانی سایر گذرواژهها نخواهد شد.
این دستور برای استفاده در محیطهای سیستمی بزرگ طراحی شده است که در آنها حسابهای کاربری زیادی در یک زمان واحد بهروزرسانی میشوند.
گزینهها (OPTIONS)
گزینههایی که برای دستور 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
هشدارها (CAVEATS)
فایل ورودی باید محافظت شود زیرا شامل گذرواژههای رمزگذارینشده است.
پیکربندی (CONFIGURATION)
متغیرهای پیکربندی زیر در /etc/login.defs رفتار این ابزار را تغییر میدهند:
GID_MAX (عدد)، GID_MIN (عدد)
مقدار پیشفرض برای GID_MIN (به ترتیب GID_MAX) برابر با 1000 (به ترتیب 60000) است.
HOME_MODE (عدد)
دستورات useradd و newusers از این مقدار برای تنظیم حالت دسترسی دایرکتوری خانگی که ایجاد میکنند استفاده مینمایند.
MAX_MEMBERS_PER_GROUP (عدد)
مقدار پیشفرض 0 است، به این معنی که هیچ محدودیتی در تعداد اعضای یک گروه وجود ندارد.
این قابلیت (تقسیم گروه یا split group) امکان محدود کردن طول خطوط در فایل گروه را فراهم میکند. این ویژگی برای اطمینان از اینکه طول خطوط گروههای NIS از ۱۰۲۴ نویسه بیشتر نشود، مفید است.
اگر نیاز به اعمال چنین محدودیتی دارید، میتوانید از مقدار 25 استفاده کنید.
نکته: تقسیم گروهها ممکن است توسط همه ابزارها پشتیبانی نشود (حتی در مجموعه ابزار Shadow). نباید از این متغیر استفاده کنید مگر اینکه واقعاً به آن نیاز داشته باشید.
PASS_MAX_DAYS (عدد)
PASS_WARN_AGE (عدد)
SUB_GID_MIN (عدد)، SUB_GID_MAX (عدد)، SUB_GID_COUNT (عدد)
مقادیر پیشفرض برای SUB_GID_MIN، SUB_GID_MAX و SUB_GID_COUNT به ترتیب 100000، 600100000 و 65536 هستند.
SUB_GID_DETERMINISTIC (بولی)
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 (عدد)
مقادیر پیشفرض برای SUB_UID_MIN، SUB_UID_MAX و SUB_UID_COUNT به ترتیب 100000، 600100000 و 65536 هستند.
SUB_UID_DETERMINISTIC (بولی)
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 (عدد)
مقدار پیشفرض برای SYS_GID_MIN (به ترتیب SYS_GID_MAX) برابر با 101 (به ترتیب GID_MIN-1) است.
SYS_UID_MAX (عدد)، SYS_UID_MIN (عدد)
مقدار پیشفرض برای SYS_UID_MIN (به ترتیب SYS_UID_MAX) برابر با 101 (به ترتیب UID_MIN-1) است.
UID_MAX (عدد)، UID_MIN (عدد)
مقدار پیشفرض برای UID_MIN (به ترتیب UID_MAX) برابر با 1000 (به ترتیب 60000) است.
UMASK (عدد)
دستورات useradd و newusers در صورتی که HOME_MODE تنظیم نشده باشد، از این ماسک برای تنظیم حالت دسترسی دایرکتوری خانگی که ایجاد میکنند استفاده مینمایند.
همچنین توسط pam_umask به عنوان مقدار پیشفرض umask استفاده میشود.
فایلها (FILES)
/etc/passwd
/etc/shadow
/etc/group
/etc/gshadow
/etc/login.defs
/etc/pam.d/newusers
/etc/subgid
/etc/subuid
همچنین ببینید (SEE ALSO)
| 07/30/2026 | shadow-utils 4.20.0 |