USERDBCTL(1) userdbctl USERDBCTL(1)

userdbctl - بازرسی کاربران، گروه‌ها و عضویت‌های گروهی

userdbctl [OPTIONS...] {COMMAND} [NAME...]

userdbctl می‌تواند برای بازرسی کاربران و گروه‌ها (و همچنین عضویت‌های گروهی) سیستم استفاده شود. این ابزار کلاینت اطلاعات کاربر/گروه ارائه‌شده توسط سرویس‌های مختلف سیستم را استعلام می‌کند؛ هم مواردی که با رکوردهای کاربر/گروه JSON کار می‌کنند (همان‌طور که توسط تعاریف JSON User Records[1] و JSON Group Records[2] تعریف شده‌اند) و هم رکوردهای کاربر و گروه کلاسیک UNIX NSS/glibc. این ابزار در وهله اول یک کلاینت برای User/Group Record Lookup API via Varlink[3] است، و همچنین ممکن است رکوردهای کاربر و گروهِ تکمیلی (drop-in) با قالب JSON را از مسیرهای /etc/userdb/, /run/userdb/, /run/host/userdb/, /usr/lib/userdb/ دریافت کند (برای جزئیات درباره رکوردهای کاربر drop-in به nss-systemd(8) مراجعه کنید).

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

--output=MODE

حالت خروجی را انتخاب می‌کند. یکی از مقادیر "classic"، "friendly"، "table" یا "json" را می‌پذیرد. اگر "classic" باشد، خروجی بسیار شبیه به قالب /etc/passwd یا /etc/group تولید می‌شود. اگر "friendly" باشد، خروجی جامع‌تر، کاربرپسند و خوانا برای انسان تولید می‌گردد. اگر "table" باشد، خروجی به صورت حداقلی و جدولی تولید می‌شود. اگر "json" باشد، خروجی با قالب JSON تولید می‌گردد. در صورتی که یک کاربر/گروه در خط فرمان مشخص شده باشد، پیش‌فرض "friendly" است، و در غیر این صورت "table".

توجه داشته باشید که اکثر قالب‌های خروجی تمام اطلاعات موجود را نشان نمی‌دهند. به ویژه، "classic" و "table" تنها مهم‌ترین فیلدها را نمایش می‌دهند. حالت‌های مختلف همچنین هش‌های گذرواژه را نشان نمی‌دهند. از "json" برای مشاهده همه فیلدها، از جمله فیلدهای احراز هویت استفاده کنید.

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

--json=FORMAT

حالت خروجی JSON (مشابه --output=json) و حالت دقیق نمایش را انتخاب می‌کند. یکی از مقادیر "pretty" یا "short" را می‌پذیرد. اگر "pretty" باشد، فاصله‌های خالی و خطوط جدیدِ خوانا برای انسان در خروجی درج می‌شوند تا داده‌های JSON خواناتر شوند. اگر "short" باشد، تمام فاصله‌های خالی اضافی حذف می‌شوند.

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

--service=SERVICE[:SERVICE...], -s SERVICE:SERVICE...

کنترل می‌کند که کدام سرویس‌ها برای کاربران/گروه‌ها استعلام شوند. فهرستی از یک یا چند نام سرویس را که با ":" از هم جدا شده‌اند می‌پذیرد. برای فهرستی از نام‌های سرویس شناخته‌شده به بخش‌های زیر مراجعه کنید. در صورت مشخص نشدن، تمام سرویس‌های موجود به طور هم‌زمان استعلام می‌شوند.

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

--with-nss=BOOL

کنترل می‌کند که آیا جستجوهای کلاسیک کاربر/گروه glibc/NSS در خروجی گنجانده شوند یا خیر. اگر --with-nss=no استفاده شود، هرگونه تلاش برای تفکیک یا شمارش کاربران/گروه‌هایی که صرفاً از طریق glibc NSS ارائه می‌شوند متوقف می‌گردد. اگر --with-nss=yes مشخص شود، چنین کاربران/گروه‌هایی در خروجی گنجانده می‌شوند (که حالت پیش‌فرض است).

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

--with-varlink=BOOL

کنترل می‌کند که آیا جستجوهای کاربر/گروه Varlink در خروجی گنجانده شوند یا خیر، یعنی جستجوهایی که از طریق User/Group Record Lookup API via Varlink[3] انجام می‌شوند. اگر --with-varlink=no استفاده شود، هرگونه تلاش برای تفکیک یا شمارش کاربران/گروه‌هایی که صرفاً از طریق Varlink ارائه می‌شوند متوقف می‌گردد. اگر --with-varlink=yes مشخص شود، چنین کاربران/گروه‌هایی در خروجی گنجانده می‌شوند (که حالت پیش‌فرض است).

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

--with-dropin=BOOL

کنترل می‌کند که آیا جستجوهای کاربر/گروه تعریف‌شده با استفاده از فایل‌های تکمیلی (drop-in) در مسیرهای /etc/userdb/, /run/userdb/, /run/host/userdb/, /usr/lib/userdb/ در خروجی گنجانده شوند یا خیر. اگر --with-dropin=no استفاده شود، این رکوردها نادیده گرفته می‌شوند. اگر --with-dropin=yes مشخص شود، چنین کاربران/گروه‌هایی در خروجی گنجانده می‌شوند (که حالت پیش‌فرض است).

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

--synthesize=BOOL

کنترل می‌کند که آیا رکوردهایی برای کاربران/گروه‌های root و nobody در صورتی که به شکل دیگری تعریف نشده باشند، و همچنین کاربران/گروه‌ها برای محدوده UID «خارجی» (foreign) سنتز (ترکیب و ایجاد) شوند یا خیر. به طور پیش‌فرض (یا با "yes")، چنین رکوردهایی در صورت مفقود بودن به طور ضمنی سنتز می‌شوند زیرا اهمیت ویژه‌ای برای سیستم‌عامل دارند. با مقدار "no"، این سنتز خاموش می‌شود.

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

-N

این گزینه مخفف --with-nss=no --synthesize=no است. از این گزینه برای نمایش تنها رکوردهایی استفاده کنید که به صورت بومی به عنوان رکوردهای کاربر یا گروه JSON تعریف شده‌اند، در حالی که تمام سازگاری‌های NSS/glibc و تمام سنتزهای ضمنی خاموش شده‌اند.

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

--multiplexer=BOOL

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

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

--chain

هنگامی که همراه با دستور ssh-authorized-keys استفاده شود، امکان ارسال یک خط فرمان اضافی را پس از نام کاربر فراهم می‌کند که پس از تکمیل جستجو به صورت زنجیره‌ای اجرا می‌شود. این امر اجازه می‌دهد تا چندین ابزار که کلیدهای مجاز SSH را نمایش می‌دهند به یکدیگر زنجیر شوند.

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

--fuzzy, -z

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

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

--disposition=

هنگامی که با دستور user یا group استفاده شود، بر اساس ماهیت/طبقه‌بندی (disposition) رکورد فیلتر می‌کند. یکی از مقادیر "intrinsic"، "system"، "regular"، "dynamic" یا "container" را می‌پذیرد. می‌تواند چندین بار استفاده شود، که در این صورت فقط کاربرانی که با هر یک از طبقه‌بندی‌های مشخص‌شده مطابقت داشته باشند نمایش داده می‌شوند.

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

-I, -S, -R

به ترتیب میان‌برهایی برای --disposition=intrinsic، --disposition=system و --disposition=regular هستند.

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

--uid-min=, --uid-max=

هنگامی که با دستور user یا group استفاده شود، خروجی را بر اساس محدوده‌های UID/GID فیلتر می‌کند. به ترتیب مقادیر عددی حداقل یا حداکثر UID/GID را می‌پذیرد. فقط رکوردهای داخل محدوده مشخص‌شده را نمایش می‌دهد. هنگامی که روی دستور user اعمال شود، با UIDها مطابقت داده می‌شود. هنگامی که روی دستور group اعمال شود، با GIDها مطابقت داده می‌شود (علیرغم نام سوییچ). در صورت مشخص نشدن، مقدار پیش‌فرض 0 (برای حداقل) و 4294967294 (برای حداکثر) است، یعنی به طور پیش‌فرض هیچ فیلتری اعمال نمی‌شود زیرا کل محدوده UID/GID پوشش داده شده است.

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

--uuid=

هنگامی که با دستور user یا group استفاده شود، خروجی را به رکوردی با UUID مشخص‌شده محدود و فیلتر می‌کند. در صورت مشخص نشدن، هیچ فیلتر مبتنی بر UUID اعمال نمی‌شود.

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

--boundaries=

هنگامی که با دستور user یا group استفاده شود، کنترل می‌کند که آیا اطلاعات مرزهای مرتبط با محدوده UID/GID در خروجی جدولی نمایش داده شود یا خیر. یک مقدار بولی می‌پذیرد. پیش‌فرض true است.

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

-B

میان‌بری برای --boundaries=no است.

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

--from-file=PATH, -F

هنگامی که با دستور user یا group استفاده شود، تعریف کاربر را با فرمت JSON از فایل مشخص‌شده می‌خواند، به جای اینکه آن را از سیستم استعلام کند. اگر مسیر به صورت "-" مشخص شود، داده‌های JSON را از ورودی استاندارد می‌خواند. این گزینه برای اعتبارسنجی و بررسی سریع رکوردهای کاربر یا گروه JSON و بررسی نحوه تفسیر آن‌ها در سیستم محلی مفید است.

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

--no-pager

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

--no-legend

راهنما (legend)، یعنی سرستون‌ها و پانویس حاوی نکات را چاپ نمی‌کند.

-h, --help

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

--version

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

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

user [USER...]

تمام رکوردهای کاربر شناخته‌شده را فهرست می‌کند یا جزئیات یک یا چند رکورد کاربر مشخص‌شده را نمایش می‌دهد. از --output= برای تنظیم حالت خروجی استفاده کنید.

در صورت استفاده به همراه --from-file= داده‌های رکورد کاربر به جای استعلام از سیستم، در قالب JSON از فایل مشخص‌شده خوانده می‌شود. برای جزئیات به بالا مراجعه کنید.

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

group [GROUP...]

تمام رکوردهای گروه شناخته‌شده را فهرست می‌کند یا جزئیات یک یا چند رکورد گروه مشخص‌شده را نمایش می‌دهد. از --output= برای تنظیم حالت خروجی استفاده کنید.

در صورت استفاده به همراه --from-file= داده‌های رکورد گروه به جای استعلام از سیستم، در قالب JSON از فایل مشخص‌شده خوانده می‌شود. برای جزئیات به بالا مراجعه کنید.

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

users-in-group [GROUP...]

کاربرانی را که عضو گروه‌های مشخص‌شده هستند فهرست می‌کند. اگر هیچ گروهی مشخص نشده باشد، تمام عضویت‌های کاربر/گروه تعریف‌شده را فهرست می‌نماید. از --output= برای تنظیم حالت خروجی استفاده کنید.

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

groups-of-user [USER...]

گروه‌هایی را که کاربران مشخص‌شده عضو آن‌ها هستند فهرست می‌کند. اگر هیچ کاربری مشخص نشده باشد، تمام عضویت‌های کاربر/گروه تعریف‌شده را فهرست می‌نماید (در این حالت، groups-of-user و users-in-group معادل یکدیگر هستند). از --output= برای تنظیم حالت خروجی استفاده کنید.

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

services

تمام سرویس‌هایی را که در حال حاضر تعاریف کاربر/گروه را به سیستم ارائه می‌دهند فهرست می‌کند. برای فهرستی از سرویس‌های شناخته‌شده ارائه‌دهنده اطلاعات کاربر به بخش‌های زیر مراجعه کنید.

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

ssh-authorized-keys

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

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

load-credentials

هنگامی که مشخص شود، اعتبارهای (credentials) زیر هنگام ارسال مورد استفاده قرار می‌گیرند:

userdb.user.*, userdb.group.*

این اعتبارات باید حاوی رکوردهای معتبر JSON User[1] و JSON Group[2] باشند. به ازای هر اعتبار منطبق، فایل‌های مختلفی در /etc/userdb/ ایجاد می‌شود که رابط توصیف‌شده در nss-systemd(8) را پیاده‌سازی می‌کند. هر رکورد کاربر ارسال‌شده باید شامل فیلدهای معتبر UID و GID باشد. هر رکورد گروه ارسال‌شده باید شامل یک فیلد GID باشد (یعنی تخصیص خودکار UID/GID پشتیبانی نمی‌شود). برای هر دو رکورد کاربر و گروه، پسوند اعتبار (برای "userdb.user.foobar" پسوند "foobar" است) باید با نام کاربر یا گروه کدگذاری‌شده در رکورد مطابقت داشته باشد.

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

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

دستور userdbctl services تمام سرویس‌های در حال اجرایی را که تعاریف کاربر یا گروه را به سیستم ارائه می‌دهند فهرست می‌کند. سرویس‌های شناخته‌شده زیر در میان این فهرست نمایش داده می‌شوند:

io.systemd.DynamicUser

این سرویس توسط خود مدیر سرویس سیستم (یعنی PID 1) ارائه می‌شود و تمام کاربرانی را (و گروه‌های آن‌ها را) که از طریق تنظیم DynamicUser= در فایل‌های واحد (unit) سرویس ایجاد شده‌اند در دسترس سیستم قرار می‌دهد (برای جزئیات درباره این تنظیم به systemd.exec(5) مراجعه کنید).

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

io.systemd.Home

این سرویس توسط systemd-homed.service(8) ارائه می‌شود و تمام کاربران (و گروه‌های آن‌ها) متعلق به دایرکتوری‌های خانگی مدیریت‌شده توسط آن سرویس را در دسترس سیستم قرار می‌دهد.

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

io.systemd.Machine

این سرویس توسط systemd-machined.service(8) ارائه می‌شود و رکوردهایی را برای تمام کاربران/گروه‌های استفاده‌شده توسط کانتینری که از فضای نام کاربر (user namespacing) استفاده می‌کند، سنتز می‌نماید.

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

io.systemd.Multiplexer

این سرویس توسط systemd-userdbd.service(8) ارائه می‌شود و جستجوهای کاربر/گروه را به تمام سرویس‌های جستجوی دیگر در حال اجرا تسهیم (توزیع) می‌کند. این سرویس نقطه ورود اصلی برای کلاینت‌های رکوردهای کاربر/گروه است، زیرا پیاده‌سازی سمت کلاینت را به طور اساسی ساده می‌کند، چرا که کلاینت‌ها می‌توانند به جای پرس‌وجو از تمام سرویس‌های در حال اجرا به صورت موازی، از یک سرویس واحد استعلام بگیرند. userdbctl نیز ترجیحاً از این سرویس استفاده می‌کند، مگر اینکه --with-nss= یا --service= استفاده شوند که در این صورت کنترل دقیق‌تری بر روی سرویس‌های هدف مورد نیاز است.

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

io.systemd.NameServiceSwitch

این سرویس (نیز) توسط systemd-userdbd.service(8) ارائه می‌شود و رکوردهای کلاسیک کاربر و گروه NSS/glibc را به رکوردهای کاربر/گروه JSON تبدیل می‌کند و سازگاری کامل رو به عقب را فراهم می‌سازد. برای غیرفعال کردن این سازگاری از --with-nss=no استفاده کنید، به بالا مراجعه نمایید. توجه داشته باشید که این سازگاری در واقع در هر دو جهت فراهم شده است: nss-systemd(8) به طور خودکار رکوردهای کاربر/گروه کلاسیک NSS/glibc را از تمام رکوردهای کاربر/گروه JSON ارائه‌شده به سیستم سنتز می‌کند، بنابراین استفاده از هر دو API تا حد زیادی معادل است و دسترسی به داده‌های یکسانی را فراهم می‌کند، با این حال APIهای NSS/glibc لزوماً تنها مجموعه محدودتری از فیلدها را در معرض نمایش قرار می‌دهند.

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

io.systemd.DropIn

این سرویس (نیز) توسط systemd-userdbd.service(8) ارائه می‌شود و رکوردهای کاربر/گروه JSON را از مسیرهای /etc/userdb/, /run/userdb/, /run/host/userdb/, /usr/lib/userdb/ دریافت می‌کند.

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

توجه داشته باشید که userdbctl دارای پشتیبانی داخلی برای جستجوهای مبتنی بر NSS نیز هست. این بدان معناست که اگر نه io.systemd.Multiplexer و نه io.systemd.NameServiceSwitch در حال اجرا نباشند، جستجوها در پایگاه‌های داده پایه‌ای کاربر/گروه همچنان کار خواهند کرد.

ابزار userdbctl ممکن است برای در دسترس قرار دادن فهرست کلیدهای مجاز SSH که احتمالاً در یک رکورد کاربر موجود است به دیمن SSH برای احراز هویت استفاده شود. برای این منظور، موارد زیر را در sshd_config(5) پیکربندی کنید:

...
AuthorizedKeysCommand /usr/bin/userdbctl ssh-authorized-keys %u
AuthorizedKeysCommandUser root
...

گاهی اوقات، اجازه دادن به فراخوانی زنجیره‌ای برنامه دیگری برای فهرست کردن کلیدهای مجاز SSH مفید است. با استفاده از گزینه --chain، چنین ابزاری می‌تواند پس از اتمام جستجو، فارغ از اینکه کلید SSH یافت شده باشد یا خیر، توسط userdbctl ssh-authorized-keys به صورت زنجیره‌ای اجرا شود. مثال:

...
AuthorizedKeysCommand /usr/bin/userdbctl ssh-authorized-keys %u --chain /usr/bin/othertool %u
AuthorizedKeysCommandUser root
...

دستور بالا ابتدا پایگاه داده userdb را برای کلیدهای SSH استعلام می‌کند و سپس /usr/bin/othertool را به صورت زنجیره‌ای اجرا می‌نماید تا آن نیز استعلام شود.

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

$SYSTEMD_LOG_LEVEL

حداکثر سطح ثبت وقایع (لاگ) برای پیام‌های منتشرشده (پیام‌های با سطح لاگ بالاتر، یعنی با اهمیت کمتر، نادیده گرفته خواهند شد). فهرستی از مقادیر جداشده با کاما را می‌پذیرد. یک مقدار می‌تواند یکی از موارد زیر باشد (به ترتیب کاهش اهمیت): emerg، alert، crit، err، warning، notice، info، debug یا یک عدد صحیح در محدوده 0...7. برای اطلاعات بیشتر به syslog(3) مراجعه کنید. هر مقدار می‌تواند به صورت اختیاری با یکی از پیشوندهای console، syslog، kmsg یا journal همراه با یک دو نقطه (:) مشخص شود تا حداکثر سطح لاگ را برای آن مقصد لاگ خاص تعیین کند (برای مثال SYSTEMD_LOG_LEVEL=debug,console:info مشخص می‌کند که لاگ در سطح debug باشد مگر هنگام ثبت در کنسول که باید در سطح info باشد). توجه داشته باشید که حداکثر سطح لاگ سراسری بر حداکثر سطوح لاگِ هر مقصد اولویت دارد.

$SYSTEMD_LOG_COLOR

یک مقدار بولی. اگر درست باشد، پیام‌های نوشته‌شده در tty بر اساس اولویت رنگی خواهند شد.

این تنظیم تنها زمانی مفید است که پیام‌ها مستقیماً در ترمینال نوشته شوند، زیرا journalctl(1) و سایر ابزارهایی که لاگ‌ها را نمایش می‌دهند، خودشان پیام‌ها را بر اساس سطح لاگ رنگی می‌کنند.

$SYSTEMD_LOG_TIME

یک مقدار بولی. اگر درست باشد، پیام‌های لاگ کنسول با یک برچسب زمانی پیشوند می‌شوند.

این تنظیم تنها زمانی مفید است که پیام‌ها مستقیماً در ترمینال یا یک فایل نوشته شوند، زیرا journalctl(1) و سایر ابزارهایی که لاگ‌ها را نمایش می‌دهند، خودشان برچسب‌های زمانی را بر اساس متادیتای ورودی پیوست می‌کنند.

$SYSTEMD_LOG_LOCATION

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

توجه داشته باشید که مکان لاگ اغلب به عنوان متادیتا به ورودی‌های ژورنال ضمیمه می‌شود. با این حال، درج مستقیم آن در متن پیام می‌تواند هنگام اشکال‌زدایی برنامه‌ها راحت باشد.

$SYSTEMD_LOG_TID

یک مقدار بولی. اگر درست باشد، پیام‌ها با شناسه عددی ریسه جاری (TID) پیشوند می‌شوند.

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

$SYSTEMD_LOG_TARGET

مقصد پیام‌های لاگ. یکی از مقادیر console (ثبت در tty متصل‌شده)، console-prefixed (ثبت در tty متصل‌شده اما با پیشوندهایی که سطح لاگ و "facility" را مشخص می‌کنند، به syslog(3) مراجعه کنید)، kmsg (ثبت در بافر لاگ چرخشی هسته)، journal (ثبت در ژورنال)، journal-or-kmsg (ثبت در ژورنال در صورت در دسترس بودن، و در غیر این صورت در kmsg)، auto (تعیین خودکار مقصد لاگ مناسب، پیش‌فرض)، null (غیرفعال کردن خروجی لاگ).

$SYSTEMD_LOG_RATELIMIT_KMSG

آیا محدودیت نرخ (ratelimit) روی kmsg اعمال شود یا خیر. یک مقدار بولی می‌پذیرد. پیش‌فرض "true" است. در صورت غیرفعال شدن، systemd پیام‌های نوشته‌شده در kmsg را محدود نمی‌کند.

$SYSTEMD_PAGER, $PAGER

صفحه‌بندی که هنگام مشخص نشدن --no-pager استفاده می‌شود. در صورت تنظیم بودن $SYSTEMD_PAGER از آن استفاده می‌شود؛ در غیر این صورت از $PAGER استفاده خواهد شد. اگر نه $SYSTEMD_PAGER و نه $PAGER تنظیم نشده باشند، مجموعه‌ای از پیاده‌سازی‌های شناخته‌شده صفحه‌بند به نوبت امتحان می‌شوند، از جمله less(1) و more(1)، تا زمانی که یکی پیدا شود. اگر هیچ پیاده‌سازی صفحه‌بندی پیدا نشود، هیچ صفحه‌بندی فراخوانی نمی‌شود. تنظیم این متغیرهای محیطی روی یک رشته خالی یا مقدار "cat" معادل ارسال --no-pager است.

نکته: اگر $SYSTEMD_PAGERSECURE تنظیم نشده باشد، $SYSTEMD_PAGER و $PAGER فقط برای غیرفعال کردن صفحه‌بند (با "cat" یا "") می‌توانند استفاده شوند، و در غیر این صورت نادیده گرفته می‌شوند.

$SYSTEMD_LESS

لغو گزینه‌های ارسالی به less (به طور پیش‌فرض "FRSXMK").

کاربران ممکن است بخواهند دو گزینه را به ویژه تغییر دهند:

K

این گزینه به صفحه‌بند دستور می‌دهد هنگام فشرده شدن Ctrl+C فوراً خارج شود. برای اینکه به less اجازه دهید خودش Ctrl+C را برای بازگشت به خط فرمان صفحه‌بند مدیریت کند، این گزینه را لغو کنید.

اگر مقدار $SYSTEMD_LESS شامل "K" نباشد، و صفحه‌بند فراخوانی‌شده less باشد، Ctrl+C توسط فایل اجرایی نادیده گرفته شده و باید توسط صفحه‌بند مدیریت شود.

X

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

توجه داشته باشید که تنظیم متغیر محیطی معمولی $LESS هیچ تاثیری برای فراخوانی‌های less توسط ابزارهای systemd ندارد.

برای توضیحات بیشتر به less(1) مراجعه کنید.

$SYSTEMD_LESSCHARSET

لغو مجموعه نویسه (charset) ارسالی به less (به طور پیش‌فرض "utf-8"، اگر ترمینال فراخواننده به عنوان سازگار با UTF-8 تشخیص داده شود).

توجه داشته باشید که تنظیم متغیر محیطی معمولی $LESSCHARSET هیچ تاثیری برای فراخوانی‌های less توسط ابزارهای systemd ندارد.

$SYSTEMD_PAGERSECURE

دستورات رایج صفحه‌بند مانند less(1)، علاوه بر «صفحه‌بندی»، یعنی پیمایش در خروجی، از باز کردن یا نوشتن در فایل‌های دیگر و اجرای دستورات دلخواه شل پشتیبانی می‌کنند. هنگامی که دستورات با امتیازات بالا، به عنوان مثال تحت sudo(8) یا pkexec(1) فراخوانی می‌شوند، صفحه‌بند به یک مرز امنیتی تبدیل می‌شود. باید دقت شود که تنها برنامه‌هایی با قابلیت‌های کاملاً محدود به عنوان صفحه‌بند استفاده شوند، و ویژگی‌های تعاملی ناخواسته مانند باز کردن یا ایجاد فایل‌های جدید یا شروع زیرفرایندها مجاز نباشند. «حالت امن» برای صفحه‌بند ممکن است همان‌طور که در زیر توضیح داده شده فعال شود، اگر صفحه‌بند از آن پشتیبانی کند (بیشتر صفحه‌بندها به شیوه‌ای نوشته نشده‌اند که این موضوع را در نظر بگیرند). توصیه می‌شود یا صراحتاً «حالت امن» را فعال کنید یا با استفاده از --no-pager یا PAGER=cat هنگام اجازه دادن به کاربران غیرقابل اعتماد برای اجرای دستورات با امتیازات بالا، صفحه‌بند را کاملاً غیرفعال نمایید.

این گزینه یک آرگومان بولی می‌پذیرد. هنگامی که روی درست تنظیم شود، «حالت امن» صفحه‌بند فعال می‌شود. در «حالت امن»، هنگام فراخوانی صفحه‌بند LESSSECURE=1 تنظیم خواهد شد، که به صفحه‌بند دستور می‌دهد دستوراتی را که فایل‌های جدید باز می‌کنند یا ایجاد می‌کنند یا زیرفرایندهای جدید آغاز می‌کنند غیرفعال کند. در حال حاضر فقط less(1) شناخته شده است که این متغیر را درک می‌کند و «حالت امن» را پیاده‌سازی می‌نماید.

هنگامی که روی نادرست تنظیم شود، هیچ محدودیتی بر صفحه‌بند اعمال نمی‌شود. تنظیم SYSTEMD_PAGERSECURE=0 یا حذف نکردن آن از متغیرهای محیطی به ارث رسیده ممکن است به کاربر اجازه دهد دستورات دلخواه را اجرا کند.

هنگامی که $SYSTEMD_PAGERSECURE تنظیم نشده باشد، ابزارهای systemd تلاش می‌کنند تا به طور خودکار تشخیص دهند که آیا «حالت امن» باید فعال شود و آیا صفحه‌بند از آن پشتیبانی می‌کند یا خیر. اگر UID مؤثر با مالک نشست ورود یکسان نباشد، به geteuid(2) و sd_pid_get_owner_uid(3) مراجعه کنید، یا هنگام اجرا تحت sudo(8) یا ابزارهای مشابه ($SUDO_UID تنظیم شده باشد [4]). در این موارد، SYSTEMD_PAGERSECURE=1 تنظیم می‌شود و صفحه‌بندهایی که پیاده‌سازی «حالت امن» در آن‌ها شناخته‌شده نیست اصلاً استفاده نخواهند شد. توجه داشته باشید که این تشخیص خودکار فقط متداول‌ترین سازوکارهای ارتقای امتیازات را پوشش می‌دهد و برای راحتی کار در نظر گرفته شده است. توصیه می‌شود صراحتاً $SYSTEMD_PAGERSECURE را تنظیم کرده یا صفحه‌بند را غیرفعال کنید.

توجه داشته باشید که اگر متغیرهای $SYSTEMD_PAGER یا $PAGER قرار است رعایت شوند، به جز برای غیرفعال کردن صفحه‌بند، $SYSTEMD_PAGERSECURE نیز باید تنظیم شده باشد.

$SYSTEMD_COLORS

یک آرگومان بولی، یا یک مقدار ویژه می‌پذیرد. به طور پیش‌فرض (تنظیم‌نشده)، systemd و ابزارهای مرتبط در صورت امکان از رنگ‌ها در خروجی خود استفاده خواهند کرد. اگر $COLORTERM روی "truecolor" یا "24bit" تنظیم شده باشد، رنگ‌های 24 بیتی فعال می‌شوند، در غیر این صورت 256 رنگ، مگر اینکه $NO_COLOR یا $TERM نشان دهد رنگ‌ها غیرفعال هستند.

true

مشابه تنظیم‌نشده، با این تفاوت که $NO_COLOR نادیده گرفته می‌شود.

false

خروجی تک‌رنگ خواهد بود.

"16", "256", "24bit"

همیشه به ترتیب از رنگ‌های پایه ۱۶ تایی ANSI، ۲۵۶ رنگ، یا رنگ ۲۴ بیتی استفاده می‌کند.

"auto-16", "auto-256", "auto-24bit"

از تعداد رنگ‌های مشخص‌شده، بر اساس $TERM و اینکه کنسول به چه چیزی متصل است، استفاده می‌کند.

$SYSTEMD_URLIFY

مقدار باید یک بولی باشد. کنترل می‌کند که آیا پیوندهای قابل کلیک در خروجی برای شبیه‌سازهای ترمینالی که از این قابلیت پشتیبانی می‌کنند تولید شود یا خیر. این گزینه را می‌توان برای لغو تصمیمی که systemd بر اساس $TERM و سایر شرایط می‌گیرد تعیین کرد.

systemd(1), systemd-userdbd.service(8), systemd-homed.service(8), nss-systemd(8), getent(1)

1.
JSON User Records
2.
JSON Group Records
3.
User/Group Record Lookup API via Varlink
4.
توصیه می‌شود سایر ابزارها نیز $SUDO_UID را در صورت لزوم تنظیم و بررسی کنند و با آن به عنوان یک رابط مشترک رفتار نمایند.
systemd 261.2