SYSUSERS.D(5) sysusers.d SYSUSERS.D(5)

sysusers.d - تخصیص اعلانی کاربران و گروه‌های سیستمی

/etc/sysusers.d/*.conf
/run/sysusers.d/*.conf
/usr/local/lib/sysusers.d/*.conf
/usr/lib/sysusers.d/*.conf
#Type Name       ID                  GECOS              Home directory Shell
u     user_name  uid                 "User Description" /home/dir      /path/to/shell
u     user_name  uid:gid             "User Description" /home/dir      /path/to/shell
u     user_name  /file/owned/by/user "User Description" /home/dir      /path/to/shell
g     group_name gid
g     group_name /file/owned/by/group
m     user_name  group_name
r     -          lowest-highest

systemd-sysusers از فایل‌های دایرکتوری sysusers.d برای ایجاد کاربران و گروه‌های سیستمی و افزودن کاربران به گروه‌ها در زمان نصب بسته یا هنگام بوت استفاده می‌کند. این ابزار تنها برای تخصیص کاربران و گروه‌های سیستمی قابل استفاده است و برای ایجاد کاربران و گروه‌های غیرسیستمی (یعنی کاربران عادی و "انسانی") مناسب نیست، زیرا مستقیماً به /etc/passwd و /etc/group دسترسی پیدا می‌کند و پایگاه‌های داده پیچیده‌تر کاربران، مانند هر پایگاه داده مبتنی بر NIS یا LDAP را دور می‌زند.

نام هر فایل پیکربندی باید به سبک package.conf یا package-part.conf باشد. حالت دوم باید زمانی استفاده شود که بخواهید بازنویسی آسان صرفاً این بخش از پیکربندی امکان‌پذیر باشد.

فایل‌های موجود در /etc/sysusers.d فایل‌های هم‌نام در /usr/lib/sysusers.d و /run/sysusers.d را بازنویسی می‌کنند. فایل‌های موجود در /run/sysusers.d فایل‌های هم‌نام در /usr/lib/sysusers.d را بازنویسی می‌کنند. بسته‌ها باید فایل‌های پیکربندی خود را در /usr/lib/sysusers.d نصب کنند. فایل‌های موجود در /etc/sysusers.d برای مدیر محلی سیستم رزرو شده‌اند، که می‌تواند از این سازوکار برای بازنویسی فایل‌های پیکربندی نصب‌شده توسط بسته‌های ارائه‌دهنده (توزیع‌کننده) استفاده کند. تمام فایل‌های پیکربندی بدون توجه به دایرکتوری محل قرارگیری‌شان، بر اساس نام فایل به ترتیب واژه‌نگاری (حروف الفبا) مرتب می‌شوند. اگر چندین فایل مسیر یکسانی را مشخص کنند، ورودی موجود در فایلی که نام آن از نظر واژه‌نگاری زودتر می‌آید اعمال خواهد شد. تمام ورودی‌های بعدی برای همان نام‌های کاربر و گروه به عنوان هشدار ثبت می‌شوند.

اگر مدیر سیستم بخواهد فایل پیکربندی ارائه‌شده توسط توزیع‌کننده را غیرفعال کند، روش توصیه‌شده قرار دادن یک پیوند نمادین (symlink) به /dev/null در /etc/sysusers.d/ با همان نام فایل است.

فرمت فایل به صورت یک خط به ازای هر کاربر یا گروه است که شامل نام، شناسه (ID)، توضیحات فیلد GECOS، دایرکتوری خانگی و پوسته (شل) ورود است:

#Type Name     ID             GECOS                 Home directory Shell
u!    httpd    404            "HTTP User"
u!    _authd   /usr/bin/authd "Authorization user"
u!    postgres -              "Postgresql Database" /var/lib/pgsql /usr/libexec/postgresdb
g     input    -              -
m     _authd   input
u     root     0              "Superuser"           /root          /bin/zsh
r     -        500-900

خطوط خالی و خطوطی که با نویسه "#" شروع می‌شوند نادیده گرفته می‌شوند و می‌توان از آن‌ها برای یادداشت‌گذاری (کامنت) استفاده کرد.

نوع شامل یک حرف تک‌نویسه‌ای است. انواع خطوط زیر پشتیبانی می‌شوند:

u

در صورتی که کاربر و گروه سیستمی با نام مشخص‌شده وجود نداشته باشند، آن‌ها را ایجاد می‌کند. گروه اصلی (primary group) کاربر روی گروهی با همان نام تنظیم می‌شود، مگر اینکه فیلد ID آن را مشخص کرده باشد. حساب کاربری به صورت غیرفعال ایجاد می‌شود تا ورود به سیستم مجاز نباشد.

افزوده شده در نسخه 215.

نوع u می‌تواند با یک علامت تعجب ("!u") پسوندگذاری شود تا یک حساب کاربری کاملاً قفل‌شده ایجاد کند. این کار توصیه می‌شود، زیرا معمولاً نباید اجازه ورود به کاربران سیستمی داده شود. با یا بدون علامت تعجب، یک گذرواژه نامعتبر تنظیم می‌شود. برای "!u"، حساب کاربری همچنین قفل می‌شود، که برای روش‌های احراز هویت غیر از گذرواژه، مانند SSH یا موارد مشابه تفاوت ایجاد می‌کند.

افزوده شده در نسخه 257.

g

در صورتی که گروه سیستمی با نام مشخص‌شده وجود نداشته باشد، آن را ایجاد می‌کند. توجه داشته باشید که u به صورت ضمنی یک گروه منطبق نیز ایجاد می‌کند. این گروه بدون تنظیم گذرواژه ایجاد خواهد شد.

افزوده شده در نسخه 215.

m

افزودن یک کاربر به یک گروه. اگر کاربر یا گروه هنوز وجود نداشته باشند، به صورت ضمنی ایجاد خواهند شد.

افزوده شده در نسخه 215.

r

افزودن محدوده‌ای از UIDها/GIDهای عددی به مخزن (pool) برای تخصیص UIDها و GIDهای جدید از آن. اگر هیچ خطی از این نوع مشخص نشده باشد، محدوده UIDها/GIDها روی یک مقدار پیش‌فرض کامپایل‌شده تنظیم می‌شود. توجه داشته باشید که هر دو UID و GID از همان مخزن تخصیص می‌یابند تا اطمینان حاصل شود که کاربران و گروه‌های هم‌نام به احتمال زیاد UID و GID عددی یکسانی خواهند داشت.

افزوده شده در نسخه 216.

فیلد نام، نام کاربر یا گروه را مشخص می‌کند. نام مشخص‌شده باید صرفاً شامل نویسه‌های a-z، A-Z، 0-9، "_" و "-" باشد، به جز اولین نویسه که باید یکی از a-z، A-Z یا "_" باشد (یعنی اعداد و "-" به عنوان اولین نویسه مجاز نیستند). نام کاربر/گروه باید حداقل یک نویسه و حداکثر 31 نویسه داشته باشد.

برای جزئیات بیشتر درباره نحو نام‌های کاربر/گروه، به نحو نام‌های کاربر/گروه (User/Group Name Syntax)[1] مراجعه کنید.

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

برای خطوط m، این فیلد باید حاوی نام کاربری باشد که می‌خواهید به یک گروه اضافه کنید.

برای خطوط از نوع r، این فیلد باید روی "-" تنظیم شود.

برای u و g، شناسه عددی 32 بیتی UID یا GID کاربر/گروه است. از شناسه‌های 65535 یا 4294967295 استفاده نکنید، زیرا این شناسه‌ها معانی جایگزین ویژه‌ای دارند. برای تخصیص خودکار UID/GID برای کاربر یا گروه، مقدار "-" را مشخص کنید (این کار اکیداً توصیه می‌شود مگر اینکه استفاده از یک UID یا GID خاص کاملاً ضروری باشد). در غیر این صورت، یک مسیر مطلق در سیستم فایل مشخص کنید. در این حالت، UID/GID از مالک/گروه آن مسیر خوانده می‌شود. این قابلیت برای ایجاد کاربرانی مفید است که UID/GID آن‌ها با مالکان فایل‌های از پیش موجود (مانند باینری‌های SUID یا SGID) مطابقت دارد. نحوهای "uid:gid" و "uid:groupname" پشتیبانی می‌شوند تا امکان ایجاد کاربران با گروه‌های اصلی مشخص فراهم شود. گروه مشخص‌شده باید صریحاً ایجاد شود یا از قبل وجود داشته باشد. مشخص کردن "-" برای UID در این نحوها نیز پشتیبانی می‌شود.

برای خطوط m، این فیلد باید حاوی نام گروهی باشد که می‌خواهید کاربر را به آن اضافه کنید.

برای خطوط از نوع r، این فیلد باید روی یک محدوده UID/GID در قالب "FROM-TO" تنظیم شود که هر دو مقدار به صورت اعداد ده‌دهی ASCII قالب‌بندی شده‌اند. در غیر این صورت، می‌توان یک UID/GID تکی را که به صورت اعداد ده‌دهی ASCII قالب‌بندی شده است مشخص کرد.

یک رشته کوتاه و توصیفی برای کاربرانی که باید ایجاد شوند، محصور در علامت‌های نقل‌قول. توجه داشته باشید که این فیلد نباید شامل دو‌نقطه (:) باشد.

صرفاً برای خطوط از نوع u اعمال می‌شود و در غیر این صورت باید خالی رها شود (یا "-").

دایرکتوری خانگی برای یک کاربر سیستمی جدید. در صورت حذف، پیش‌فرض دایرکتوری ریشه (root) خواهد بود.

صرفاً برای خطوط از نوع u اعمال می‌شود و در غیر این صورت باید خالی رها شود (یا "-"). توصیه می‌شود این مقدار حذف شود، مگر اینکه نرم‌افزار صریحاً نیازمند تنظیم یک دایرکتوری خانگی باشد.

systemd-sysusers تنها رکورد دایرکتوری خانگی را در پایگاه داده کاربر تنظیم می‌کند. برای ایجاد واقعی دایرکتوری، افزودن یک قطعه‌پیکربندی مربوطه در tmpfiles.d(5) را در نظر بگیرید.

پوسته (شل) ورود کاربر. در صورت عدم تعیین، روی /usr/sbin/nologin تنظیم خواهد شد، مگر اینکه UID کاربر 0 باشد، که در این صورت از /bin/sh استفاده خواهد شد.

صرفاً برای خطوط از نوع u اعمال می‌شود و در غیر این صورت باید خالی رها شود (یا "-"). توصیه می‌شود این مقدار حذف شود، مگر اینکه پوسته متفاوتی از /usr/sbin/nologin باید استفاده شود.

مشخص‌کننده‌ها می‌توانند در فیلدهای "Name"، "ID"، "GECOS"، "Home directory" و "Shell" استفاده شوند. یک مشخص‌کننده ناشناخته یا غیرقابل‌تفکیک به عنوان پیکربندی نامعتبر در نظر گرفته می‌شود. بسط‌های زیر شناخته‌شده هستند:

جدول 1. مشخص‌کننده‌های موجود

مشخص‌کننده مفهوم جزئیات
"%a" معماری یک رشته کوتاه که معماری سیستم محلی را مشخص می‌کند. رشته‌ای مانند x86، x86-64 یا arm64. برای فهرست کامل، به معماری‌های تعریف‌شده برای ConditionArchitecture= در systemd.unit(5) مراجعه کنید.
"%A" نسخه ایمیج سیستم‌عامل شناسه نسخه ایمیج سیستم‌عاملِ سیستم در حال اجرا، همان‌طور که از فیلد IMAGE_VERSION= در /etc/os-release خوانده می‌شود. اگر تنظیم نشده باشد، به یک رشته خالی تبدیل می‌شود. برای اطلاعات بیشتر به os-release(5) مراجعه کنید.
"%b" شناسه بوت شناسه بوت سیستم در حال اجرا، قالب‌بندی‌شده به صورت رشته. برای اطلاعات بیشتر به random(4) مراجعه کنید.
"%B" شناسه ساخت سیستم‌عامل شناسه ساخت سیستم‌عاملِ سیستم در حال اجرا، همان‌طور که از فیلد BUILD_ID= در /etc/os-release خوانده می‌شود. اگر تنظیم نشده باشد، به یک رشته خالی تبدیل می‌شود. برای اطلاعات بیشتر به os-release(5) مراجعه کنید.
"%H" نام میزبان نام میزبان سیستم در حال اجرا.
"%l" نام کوتاه میزبان نام میزبان سیستم در حال اجرا، کوتاه‌شده در اولین نقطه برای حذف هرگونه مؤلفه دامنه.
"%m" شناسه ماشین شناسه ماشینِ سیستم در حال اجرا، قالب‌بندی‌شده به صورت رشته. برای اطلاعات بیشتر به machine-id(5) مراجعه کنید.
"%M" شناسه ایمیج سیستم‌عامل شناسه ایمیج سیستم‌عاملِ سیستم در حال اجرا، همان‌طور که از فیلد IMAGE_ID= در /etc/os-release خوانده می‌شود. اگر تنظیم نشده باشد، به یک رشته خالی تبدیل می‌شود. برای اطلاعات بیشتر به os-release(5) مراجعه کنید.
"%o" شناسه سیستم‌عامل شناسه سیستم‌عاملِ سیستم در حال اجرا، همان‌طور که از فیلد ID= در /etc/os-release خوانده می‌شود. برای اطلاعات بیشتر به os-release(5) مراجعه کنید.
"%q" نام زیبای میزبان نام زیبای میزبانِ (pretty hostname) سیستم در حال اجرا، همان‌طور که از فیلد PRETTY_HOSTNAME= در /etc/machine-info خوانده می‌شود. اگر تنظیم نشده باشد، به نام کوتاه میزبان تبدیل می‌شود. برای اطلاعات بیشتر به machine-info(5) مراجعه کنید.
"%T" دایرکتوری فایل‌های موقت این یا /tmp است یا مسیری که "$TMPDIR"، "$TEMP" یا "$TMP" روی آن تنظیم شده‌اند. (توجه داشته باشید که دایرکتوری ممکن است بدون خط مورب انتهایی مشخص شود.)
"%v" انتشار هسته همانند خروجی دستور uname -r.
"%V" دایرکتوری برای فایل‌های موقت بزرگ‌تر و پایدار این یا /var/tmp است یا مسیری که "$TMPDIR"، "$TEMP" یا "$TMP" روی آن تنظیم شده‌اند. (توجه داشته باشید که دایرکتوری ممکن است بدون خط مورب انتهایی مشخص شود.)
"%w" شناسه نسخه سیستم‌عامل شناسه نسخه سیستم‌عاملِ سیستم در حال اجرا، همان‌طور که از فیلد VERSION_ID= در /etc/os-release خوانده می‌شود. اگر تنظیم نشده باشد، به یک رشته خالی تبدیل می‌شود. برای اطلاعات بیشتر به os-release(5) مراجعه کنید.
"%W" شناسه گونه سیستم‌عامل شناسه گونهٔ (واریانت) سیستم‌عاملِ سیستم در حال اجرا، همان‌طور که از فیلد VARIANT_ID= در /etc/os-release خوانده می‌شود. اگر تنظیم نشده باشد، به یک رشته خالی تبدیل می‌شود. برای اطلاعات بیشتر به os-release(5) مراجعه کنید.
"%%" علامت تک‌درصد از "%%" به جای "%" برای مشخص کردن یک علامت تک‌درصد استفاده کنید.

توجه داشته باشید که
systemd-sysusers در صورتی که کاربران یا گروه‌های مشخص‌شده از قبل وجود داشته باشند یا کاربران عضو گروه‌های مشخص‌شده باشند، هیچ کاری انجام نخواهد داد؛ بنابراین معمولاً دلیلی برای بازنویسی پیکربندی ارائه‌دهنده (توزیع‌کننده) در sysusers.d وجود ندارد، مگر اینکه بخواهید از ایجاد کاربران یا گروه‌های خاصی جلوگیری کنید.

systemd(1), systemd-sysusers(8)

1.
نحو نام‌های کاربر/گروه
systemd 261.2