SYSTEMD-SYSUSERS(8) systemd-sysusers SYSTEMD-SYSUSERS(8)

systemd-sysusers - ایجاد خودکار کاربران و گروه‌های سیستمی از روی تعاریف

systemd-sysusers [OPTIONS...] [CONFIGFILE...]

systemd-sysusers.service

systemd-sysusers کاربران و گروه‌های سیستمی را بر اساس فایل‌هایی با قالب توصیف‌شده در sysusers.d(5) ایجاد می‌کند.

اگر بدون آرگومان فراخوانی شود، دستورالعمل‌های موجود در فایل‌های پیکربندی ارائه‌شده در دایرکتوری‌های مشخص‌شده توسط sysusers.d(5) اجرا می‌شوند. هنگامی که با آرگومان‌های موضعی فراخوانی شود، اگر گزینه --replace=PATH مشخص شده باشد، آرگومان‌های مشخص‌شده در خط فرمان به جای فایل پیکربندی PATH استفاده می‌شوند. در غیر این صورت، تنها پیکربندی مشخص‌شده توسط آرگومان‌های خط فرمان اجرا می‌شود. اگر به جای نام فایل رشته‌ی "-" مشخص شود، پیکربندی از ورودی استاندارد خوانده می‌شود. اگر آرگومان نام یک فایل باشد (بدون هیچ اسلشی)، تمام دایرکتوری‌های پیکربندی برای یافتن یک فایل مطابق جستجو می‌شوند و فایلی که دارای بالاترین اولویت است اجرا می‌شود. اگر آرگومان یک مسیر باشد، آن فایل مستقیماً و بدون جستجو در دایرکتوری‌های پیکربندی برای هرگونه فایل منطبق دیگر استفاده می‌شود.

گزینه‌های زیر پشتیبانی می‌شوند:

--root=root

یک مسیر دایرکتوری را به عنوان آرگومان می‌گیرد. تمام مسیرها با مسیر جایگزین داده‌شده root پیشوندگذاری می‌شوند، از جمله مسیرهای جستجوی پیکربندی.

توجه داشته باشید که این یک ویژگی ایزوله‌سازی (sandboxing) یا امنیتی نیست. تعاریف sysusers.d(5) ممکن است به صورت کاملاً ایزوله (hermetic) نسبت به ریشه مشخص‌شده پردازش نشوند.

اضافه‌شده در نسخه ۲۱۵.

--image=image

مسیری به یک فایل ایمیج دیسک یا گره دستگاه بلوکی می‌گیرد. در صورت مشخص شدن، تمام عملیات بر روی سیستم پرونده در ایمیج دیسک مشخص‌شده اعمال می‌شود. این مشابه --root= است اما روی سیستم‌های پرونده ذخیره‌شده در ایمیج‌های دیسک یا دستگاه‌های بلوکی عمل می‌کند. ایمیج دیسک باید شامل یک سیستم پرونده یا مجموعه‌ای از سیستم‌های پرونده درون یک جدول پارتیشن GPT باشد، پیرو UAPI.2 Discoverable Partitions Specification[1]. برای اطلاعات بیشتر درباره ایمیج‌های دیسک پشتیبانی‌شده، سوئیچ هم‌نام در systemd-nspawn(1)' را ببینید.

اضافه‌شده در نسخه ۲۴۷.

--image-policy=policy

یک رشته سیاست ایمیج را به عنوان آرگومان می‌گیرد، مطابق با systemd.image-policy(7). این سیاست هنگام کار بر روی ایمیج دیسک مشخص‌شده از طریق --image= اعمال می‌شود، بالا را ببینید. اگر مشخص نشود، به صورت پیش‌فرض به سیاست "*" تنظیم می‌شود، یعنی تمام سیستم‌های پرونده شناسایی‌شده در ایمیج استفاده می‌شوند.

--replace=PATH

هنگامی که این گزینه داده می‌شود، باید یک یا چند آرگومان موضعی مشخص شود. تمام فایل‌های پیکربندی یافت‌شده در دایرکتوری‌های فهرست‌شده در sysusers.d(5) خوانده می‌شوند، و پیکربندی ارائه‌شده در خط فرمان به جای فایل پیکربندی PATH و با همان اولویت آن پردازش خواهد شد.

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

مثال ۱. اسکریپت نصب RPM برای radvd

echo 'u radvd - "radvd daemon"' | \
          systemd-sysusers --replace=/usr/lib/sysusers.d/radvd.conf -

این دستور کاربر radvd را طوری ایجاد می‌کند که گویی /usr/lib/sysusers.d/radvd.conf از قبل روی دیسک وجود داشته است. مدیر سیستم می‌تواند با قرار دادن /etc/sysusers.d/radvd.conf یا حتی /etc/sysusers.d/00-overrides.conf پیکربندی مشخص‌شده در خط فرمان را بازنویسی کند.

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

اضافه‌شده در نسخه ۲۳۸.

--dry-run

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

اضافه‌شده در نسخه ۲۵۰.

--inline

با هر آرگومان موضعی به عنوان یک خط پیکربندی مجزا به جای نام فایل رفتار می‌کند.

اضافه‌شده در نسخه ۲۳۸.

--cat-config

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

--tldr

محتوای فایل‌های پیکربندی را در خروجی استاندارد کپی می‌کند. فقط بخش‌های «جالب‌توجه» فایل‌های پیکربندی چاپ می‌شوند و کامنت‌ها و خطوط خالی نادیده گرفته می‌شوند. قبل از هر فایل، نام فایل به صورت یک کامنت چاپ می‌شود.

--no-pager

خروجی را به یک صفحه‌بند (pager) هدایت نمی‌کند.

-h, --help

یک متن راهنمای کوتاه چاپ کرده و خارج می‌شود.

--version

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

systemd-sysusers از منطق اعتبارنامه‌های سرویس همان‌طور که توسط ImportCredential=/LoadCredential=/SetCredential= پیاده‌سازی شده است پشتیبانی می‌کند (برای جزئیات به systemd.exec(5) مراجعه کنید). در صورت ارسال، اعتبارنامه‌های زیر استفاده می‌شوند:

passwd.hashed-password.user

یک رشته هش‌شده گذرواژه یونیکس برای استفاده در کاربر مشخص‌شده، هنگام ایجاد یک ورودی برای آن. این ویژگی به ویژه برای کاربر "root" مفید است چرا که امکان تعیین گذرواژه پیش‌فرض ریشه را از طریق یک فایل افزونه (drop-in) واحد یا از طرف مدیر ظرف که این اعتبارنامه را ارسال می‌کند، فراهم می‌سازد. توجه داشته باشید که تنظیم این اعتبارنامه در صورتی که حساب کاربری مشخص‌شده از قبل وجود داشته باشد هیچ تأثیری ندارد. بنابراین این اعتبارنامه در درجه اول در سناریوهای نخستین بوت یا سیستم‌هایی که کاملاً بدون حالت (stateless) هستند و در هر بوت با یک /etc/ خالی راه‌اندازی می‌شوند مفید است.

اضافه‌شده در نسخه ۲۴۹.

passwd.plaintext-password.user

مشابه "passwd.hashed-password.user" است اما انتظار یک گذرواژه متنی صریح (plaintext) را دارد که پیش از استفاده برای حساب کاربری، به طور خودکار هش می‌شود. اگر هر دو اعتبارنامه هش‌شده و متنی صریح برای یک کاربر مشخص شوند، اعتبارنامه هش‌شده اولویت دارد. عموماً توصیه می‌شود نسخه هش‌شده مشخص شود؛ با این حال در محیط‌های آزمایشی با الزامات امنیتی ضعیف‌تر، ارسال گذرواژه‌ها به صورت متنی صریح ممکن است ساده‌تر باشد.

اضافه‌شده در نسخه ۲۴۹.

passwd.shell.user

باینری پوسته (shell) را برای استفاده در حساب کاربری مشخص‌شده هنگام ایجاد آن تعیین می‌کند.

اضافه‌شده در نسخه ۲۴۹.

sysusers.extra

محتوای این اعتبارنامه می‌تواند شامل خطوط اضافی برای پردازش باشد. محتوای اعتبارنامه باید از همان قالبی پیروی کند که هر فایل drop-in دیگری در sysusers.d/ استفاده می‌کند. اگر این اعتبارنامه ارسال شود، پس از خوانده شدن تمام فایل‌های drop-in از سیستم پرونده پردازش می‌شود.

اضافه‌شده در نسخه ۲۵۲.

توجه داشته باشید که به طور پیش‌فرض فایل واحد systemd-sysusers.service به گونه‌ای تنظیم شده است که اعتبارنامه‌های "passwd.hashed-password.root"، "passwd.plaintext-password.root"، "passwd.shell.root" و "sysusers.extra" را از مدیر سرویس به ارث ببرد. بنابراین، هنگام فراخوانی یک کانتینر با یک /etc/ پر نشده برای نخستین بار، می‌توان گذرواژه کاربر root را به صورت زیر به "systemd" تنظیم کرد:

# systemd-nspawn --image=... --set-credential=passwd.hashed-password.root:'$y$j9T$yAuRJu1o5HioZAGDYPU5d.$F64ni6J2y2nNQve90M/p0ZP0ECP/qqzipNyaY9fjGpC' ...

مجدداً توجه داشته باشید داده‌هایی که در این اعتبارنامه مشخص می‌شوند فقط در هنگام ایجاد یک حساب کاربری برای نخستین بار مورد استفاده قرار می‌گیرند؛ از آن‌ها نمی‌توان برای تغییر گذرواژه یا پوسته حسابی که از قبل وجود دارد استفاده کرد.

از mkpasswd(1) برای تولید هش‌های گذرواژه یونیکس از خط فرمان استفاده کنید.

در صورت موفقیت، 0 برگردانده می‌شود، و در غیر این صورت یک کد خطای غیر صفر برمی‌گرداند.

systemd(1), sysusers.d(5), Users, Groups, UIDs and GIDs on systemd systems[2], systemd.exec(5), mkpasswd(1)

1.
UAPI.2 Discoverable Partitions Specification
2.
Users, Groups, UIDs and GIDs on systemd systems
systemd 261.2