SYSTEMD-CREDS(1) systemd-creds SYSTEMD-CREDS(1)

systemd-creds - رمزگذاری، رمزگشایی و مدیریت اطلاعات اعتبارسنجی سرویسها

systemd-creds [OPTIONS...] COMMAND [ARGS...]

دستور systemd-creds ابزاری برای فهرست کردن، نمایش دادن، رمزنگاری و رمزگشایی اعتبارنامه‌های واحد (unit credentials) است. اعتبارنامه‌ها اشیاء باینری یا متنی با اندازه محدود هستند که می‌توانند به فرآیندهای واحد ارسال شوند. آن‌ها عمدتاً برای انتقال کلیدهای رمزنگاری (هم عمومی و هم خصوصی) یا گواهی‌ها، اطلاعات حساب کاربری یا اطلاعات هویت از میزبان به سرویس‌ها استفاده می‌شوند.

اعتبارنامه‌ها در فایل‌های واحد از طریق تنظیمات ImportCredential=, LoadCredential=, SetCredential=, LoadCredentialEncrypted= و SetCredentialEncrypted= پیکربندی می‌شوند؛ برای جزئیات به systemd.exec(5) مراجعه کنید.

برای اطلاعات بیشتر به مستندات System and Service Credentials[1] مراجعه فرمایید.

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

list

فهرستی از اعتبارنامه‌های ارائه‌شده به بافت اجرای فعلی (execution context) را نمایش می‌دهد. این دستور فایل‌های موجود در دایرکتوری ارجاع‌شده توسط متغیر محیطی $CREDENTIALS_DIRECTORY را نشان می‌دهد، و برای اجرا از درون بافت سرویس در نظر گرفته شده است.

همراه با نام هر اعتبارنامه، اندازه و وضعیت امنیتی آن نیز نمایش داده می‌شود. وضعیت امنیتی یکی از موارد زیر است: "secure" (در صورتی که اعتبارنامه در حافظه غیرقابل تعویض/swap قرار داشته باشد، یعنی "ramfs")، "weak" (در صورتی که در هر نوع حافظه دیگری قرار داشته باشد)، یا "insecure" (اگر دارای هر حالت دسترسی به جز 0400 باشد، یعنی اگر توسط هر کاربری جز مالک قابل خواندن باشد).

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

cat credential...

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

هنگامی که با --json= یا --transcode= ترکیب شود، خروجی پیش از نمایش به روش‌های ساده‌ای ترنسکد (تبدیل کدگذاری) می‌شود.

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

setup

در صورتی که کلید رمزنگاری میزبان برای اعتبارنامه‌ها قبلاً ایجاد نشده باشد، آن را ایجاد می‌کند. این دستور تضمین می‌کند که اگر فایل /var/lib/systemd/credential.secret هنوز وجود ندارد، با یک کلید مخفی تصادفی مقداردهی اولیه شود. این کلید مخفی هنگام رمزنگاری/رمزگشایی اعتبارنامه‌ها با encrypt یا decrypt استفاده می‌شود و فقط برای کاربر ریشه (root) قابل دسترسی است. توجه داشته باشید که معمولاً نیازی به اجرای صریح این دستور نیست، چرا که هنگام اجرای encrypt و انتخاب رمزنگاری با کلید میزبان، به صورت ضمنی فراخوانی می‌شود.

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

encrypt input|- output|-

فایل اعتبارنامه ورودی مشخص‌شده (متن آشکار رمزنشده) را بارگیری می‌کند، آن را رمزنگاری کرده و خروجی (متن رمزشده) را در فایل اعتبارنامه هدف مشخص‌شده می‌نویسد. فایل حاصل می‌تواند در تنظیم LoadCredentialEncrypted= در فایل‌های واحد ارجاع داده شود، یا محتوای آن مستقیماً در تنظیمات SetCredentialEncrypted= استفاده شود.

دو مسیر در فایل‌سیستم را می‌پذیرد. بخش نام فایل از مسیر خروجی به عنوان نام در اعتبارنامه رمزشده تعبیه می‌شود تا اطمینان حاصل شود که اعتبارنامه‌های رمزشده بدون مشخص شدن تغییر نام داده نمی‌شوند و برای اهداف دیگر بازاستفاده نمی‌گردند. نام اعتبارنامه برای تعبیه را می‌توان با تنظیم --name= بازنویسی کرد. مسیرهای ورودی یا خروجی را می‌توان به صورت "-" مشخص کرد که در این صورت داده‌های اعتبارنامه از ورودی استاندارد خوانده شده و در خروجی استاندارد نوشته می‌شوند. اگر مسیر خروجی به صورت "-" مشخص شود، نام اعتبارنامه را نمی‌توان از مسیر فایل‌سیستم استخراج کرد و بنابراین باید با سوییچ --name= به طور صریح تعیین شود.

داده‌های اعتبارنامه به صورت متقارن با یکی از کلیدهای رمزنگاری زیر رمزنگاری و اصالت‌سنجی (authenticate) می‌شوند:

1.یک کلید مخفی که به طور خودکار از تراشه TPM2 سیستم مشتق می‌شود. این کلید رمزنگاری روی سیستم میزبان ذخیره نمی‌شود و بنابراین رمزگشایی فقط با دسترسی به تراشه TPM2 اصلی امکان‌پذیر است. به عبارت دیگر، اعتبارنامه‌ای که به این روش ایمن شده است فقط توسط همان ماشین محلی قابل رمزگشایی مجدد است.
2.یک کلید مخفی که در فایل /var/lib/systemd/credential.secret ذخیره شده و فقط برای کاربر ریشه قابل دسترسی است. این کلید رمزنگاری «میزبان» (host) روی فایل‌سیستم میزبان ذخیره می‌شود و بنابراین رمزگشایی با دسترسی به فایل‌سیستم میزبان و داشتن مجوزهای کافی امکان‌پذیر است. این کلید در صورت نیاز به طور خودکار ایجاد می‌شود، اما می‌توان آن را به طور صریح با دستور setup نیز ایجاد کرد (به بالا مراجعه کنید).
3.ترکیبی از موارد بالا: کلید رمزنگاری که هم از تراشه TPM2 و هم از فایل‌سیستم میزبان مشتق شده است. این بدان معناست که رمزگشایی هم به دسترسی به تراشه TPM2 اصلی و هم به سیستم‌عامل نصب‌شده نیاز دارد. در صورتی که تراشه TPM2 در دسترس باشد و /var/lib/systemd/ روی یک رسانه پایدار (persistent media) قرار داشته باشد، این حالت پیش‌فرض عملکرد است.

اینکه کدام یک از سه کلید برای رمزنگاری استفاده شود، با سوییچ --with-key= قابل پیکربندی است. بسته به مورد استفاده از اعتبارنامه رمزشده، کلید مورد استفاده ممکن است متفاوت باشد. به عنوان مثال، برای اعتبارنامه‌هایی که باید از طریق initrd قابل دسترسی باشند، رمزنگاری با کلید میزبان مناسب نیست زیرا دسترسی به کلید میزبان معمولاً از طریق initrd امکان‌پذیر نمی‌باشد. بنابراین برای چنین اعتبارنامه‌هایی تنها باید از کلید TPM2 استفاده شود.

اعتبارنامه‌های رمزشده همیشه با فرمت Base64 کدگذاری می‌شوند.

برای لغو عملیات رمزنگاری و به دست آوردن متن آشکار اعتبارنامه از متن رمزشده، از decrypt (در ادامه) استفاده کنید.

داده‌های اعتبارنامه با استفاده از الگوریتم AES256-GCM رمزنگاری می‌شوند که هم محرمانگی و هم یکپارچگی را فراهم می‌کند و با هش SHA256 از یک یا هر دو کلید مخفی شرح داده شده در بالا کلیدگذاری می‌شود.

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

decrypt input|- [output|-]

اثر عملیات encrypt را خنثی می‌کند: فایل اعتبارنامه ورودی مشخص‌شده (متن رمزشده) را بارگیری کرده، آن را رمزگشایی و اصالت‌سنجی می‌کند و خروجی (متن آشکار رمزگشایی‌شده) را در فایل اعتبارنامه هدف مشخص‌شده می‌نویسد.

یک یا دو مسیر در فایل‌سیستم را دریافت می‌کند. بخش نام فایل از مسیر ورودی با نام اعتبارنامه تعبیه‌شده در فایل رمزشده مقایسه می‌شود. اگر مطابقت نداشته باشد، رمزگشایی با شکست مواجه می‌شود. این کار برای اطمینان از این انجام می‌شود که اعتبارنامه‌های رمزشده بدون شناسایی تغییر کاربری داده نشوند. نام اعتبارنامه برای مقایسه با نام تعبیه‌شده در اعتبارنامه را می‌توان با سوییچ --name= نیز بازنویسی کرد. اگر مسیر ورودی به صورت "-" مشخص شود، اعتبارنامه رمزشده از ورودی استاندارد خوانده می‌شود. اگر فقط یک مسیر مشخص شود یا مسیر خروجی به صورت "-" تعیین گردد، اعتبارنامه رمزگشایی‌شده در خروجی استاندارد نوشته می‌شود. در این حالت، نام مورد انتظار تعبیه‌شده در اعتبارنامه را نمی‌توان از مسیر استخراج کرد و باید به طور صریح با --name= مشخص شود.

رمزگشایی اعتبارنامه‌ها به دسترسی به تراشه اصلی TPM2 و/یا کلید میزبان اعتبارنامه‌ها نیاز دارد (به بالا مراجعه کنید). اطلاعات مربوط به اینکه کدام کلیدها مورد نیاز هستند در داده‌های اعتبارنامه رمزشده تعبیه شده است و بنابراین رمزگشایی کاملاً خودکار انجام می‌شود.

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

--no-ask-password

برای عملیات‌های نیازمند دسترسی ویژه، از کاربر درخواست احراز هویت نمی‌کند.

-h, --help

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

--version

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

--system

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

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

--user

هنگامی که همراه با دستورات encrypt و decrypt مشخص شود، اعتبارنامه‌ای در محدوده کاربر (به جای محدوده سیستم) را رمزنگاری می‌کند. از --uid= برای انتخاب کاربری که اعتبارنامه متعلق به آن است استفاده کنید. چنین اعتبارنامه‌هایی فقط از درون بافت کاربر مشخص‌شده قابل رمزگشایی هستند، مگر اینکه بتوان دسترسی‌های لازم را به دست آورد. به طور کلی، هنگامی که یک اعتبارنامه رمزشده قرار است در مدیر سرویس به ازای کاربر استفاده شود، باید با فعال بودن این گزینه رمزنگاری شود؛ و زمانی که قرار است در مدیر سرویس سیستم استفاده شود، باید بدون این گزینه رمزنگاری گردد.

در سطح داخلی، این گزینه تضمین می‌کند که شناسه عددی کاربر (UID) و نام کاربری کاربر انتخابی، و همچنین machine-id(5) سیستم در کلید رمزنگاری گنجانده شوند.

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

--uid=

کاربری را که اعتبارنامه برای آن رمزنگاری می‌شود مشخص می‌کند. یک نام کاربری یا UID عددی را می‌پذیرد. در صورت تنظیم، گزینه --user را نتیجه می‌دهد. اگر بر روی رشته خاص "self" تنظیم شود، کاربر را برابر با کاربر فرآیند فراخوان قرار می‌دهد. اگر --user بدون --uid= استفاده شود، مقدار --uid=self در نظر گرفته می‌شود، یعنی اعتبارنامه برای کاربر فراخوان رمزنگاری می‌گردد.

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

--transcode=

هنگامی که همراه با دستورات cat یا decrypt مشخص شود، خروجی را پیش از نمایش ترنسکد (تغییر کدگذاری) می‌کند. یکی از مقادیر "base64", "unbase64", "hex" یا "unhex" را به عنوان آرگومان می‌پذیرد تا داده‌های اعتبارنامه را با Base64 یا به صورت دنباله‌ای از مقادیر هگزادسیمال کدگذاری/رمزگشایی کند. مقدار ویژه "help" می‌تواند برای فهرست کردن انواع ترنسکد پشتیبانی‌شده استفاده شود.

توجه داشته باشید که این گزینه تأثیری بر دستور encrypt ندارد، زیرا اعتبارنامه‌های رمزشده بدون قید و شرط با Base64 کدگذاری می‌شوند.

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

--newline=

هنگامی که با cat یا decrypt مشخص شود، تعیین می‌کند که آیا یک کاراکتر خط جدید در انتهای خروجی (در صورتی که به خط جدید ختم نشده باشد) اضافه شود یا خیر. یکی از مقادیر "auto", "yes" یا "no" را می‌پذیرد. حالت پیش‌فرض "auto" تنها در صورتی که داده‌های اعتبارنامه در یک TTY نوشته شوند، یک کاراکتر خط جدید به انتهای خروجی اضافه می‌کند.

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

--pretty, -p

هنگامی که با encrypt مشخص شود، کنترل می‌کند که آیا اعتبارنامه رمزشده به صورت تنظیم SetCredentialEncrypted= نمایش داده شود تا بتوان آن را مستقیماً در فایل واحد کپی کرد یا خیر. تنها زمانی مؤثر است که همراه با --name= و "-" به عنوان فایل خروجی استفاده شود.

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

--name=name

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

هنگامی که با دستور decrypt مشخص شود، نام اعتبارنامه را برای بررسی و اعتبارسنجی در برابر نام تعبیه‌شده در اعتبارنامه رمزشده تعیین می‌کند. در صورت عدم تعیین، نام به طور خودکار از بخش نام فایلِ مسیر ورودیِ مشخص‌شده انتخاب می‌شود. اگر هیچ نام اعتبارنامه‌ای در فایل اعتبارنامه رمزشده تعبیه نشده باشد (یعنی هنگام رمزنگاری از --name= با رشته خالی استفاده شده باشد)، نام مشخص‌شده هیچ تأثیری ندارد زیرا هیچ اعتبارسنجی روی نام اعتبارنامه انجام نمی‌شود.

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

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

--timestamp=timestamp

هنگامی که با دستور encrypt مشخص شود، برچسب زمانی (timestamp) را برای تعبیه در اعتبارنامه رمزشده تعیین می‌کند. مقدار پیش‌فرض زمان فعلی است. یک مشخصه برچسب زمانی را با فرمت شرح داده شده در systemd.time(7) می‌پذیرد.

هنگامی که با دستور decrypt مشخص شود، برچسب زمانی مورد استفاده برای اعتبارسنجی برچسب زمانی "not-after" را که با --not-after= در زمان رمزنگاری پیکربندی شده بود، تعیین می‌کند. اگر مشخص نشود، به طور پیش‌فرض زمان فعلی سیستم در نظر گرفته می‌شود.

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

--not-after=timestamp

هنگامی که با دستور encrypt مشخص شود، زمانی را تعیین می‌کند که پس از آن اعتبارنامه دیگر نباید استفاده شود. این کار برچسب زمانی مشخص‌شده را در اعتبارنامه رمزشده تعبیه می‌کند. در زمان رمزگشایی، برچسب زمانی با ساعت فعلی سیستم بررسی می‌شود و اگر برچسب زمانی در گذشته باشد، رمزگشایی با شکست مواجه خواهد شد. به طور پیش‌فرض چنین برچسب زمانی تنظیم نمی‌شود. یک مشخصه برچسب زمانی را با فرمت شرح داده شده در systemd.time(7) می‌پذیرد.

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

--with-key=, -H, -T

هنگامی که با دستور encrypt مشخص شود، کلید رمزنگاری/امضا را برای استفاده تعیین می‌کند. یکی از مقادیر "host", "tpm2", "host+tpm2", "null", "auto", "auto-initrd". را می‌پذیرد. برای جزئیات مربوط به انواع کلیدها به بخش‌های بالا مراجعه کنید. اگر بر روی "auto" (که پیش‌فرض است) تنظیم شود، در صورت یافتن دستگاه TPM2 و عدم اجرا در کانتینر، از کلید TPM2 استفاده می‌شود. اگر /var/lib/systemd/ روی یک رسانه پایدار باشد، از کلید میزبان استفاده می‌شود. این بدان معناست که در سیستم‌های معمولی، رمزنگاری به طور پیش‌فرض هم به تراشه TPM2 و هم به سیستم‌عامل نصب‌شده مقید می‌شود و هر دو برای رمزگشایی مجدد اعتبارنامه باید در دسترس باشند. اگر "auto" انتخاب شود اما نه TPM2 در دسترس باشد (یا درون کانتینر در حال اجرا باشد) و نه /var/lib/systemd/ روی رسانه پایدار قرار داشته باشد، رمزنگاری با شکست مواجه می‌شود. اگر بر روی "null" تنظیم شود، یک کلید با طول صفر ثابت استفاده می‌شود (بنابراین در این حالت هیچ محرمانگی و اصالتی فراهم نمی‌شود!). این منطق برای پوشش سیستم‌هایی که فاقد تراشه TPM2 هستند اما باید در آن‌ها اعتبارنامه تولید شود، مفید است. توجه داشته باشید که رمزگشایی چنین اعتبارنامه‌هایی در سیستم‌هایی که دارای تراشه TPM2 بوده و در آن‌ها UEFI SecureBoot فعال است، رد می‌شود (این کار انجام می‌شود تا چنین سیستمِ قفل‌شده‌ای فریب داده نشود و اعتبارنامه‌ای بارگیری نکند که به این شیوه تولید شده و فاقد اطلاعات اصالت‌سنجی است. در صورتی که UEFI SecureBoot یا TPM2 در دسترس نباشند، بارگیری چنین اعتبارنامه‌هایی به طور پیش‌فرض مجاز است). اگر بر روی "auto-initrd" تنظیم شود، در صورت یافتن TPM2 از کلید TPM2 استفاده می‌شود. اگر یافت نشود، از یک کلید با طول صفر ثابت معادل حالت "null" استفاده می‌شود. این گزینه به‌ویژه برای تولید فایل‌های اعتبارنامه‌ای مفید است که در صورت وجود به TPM2 رمزنگاری/اصالت‌سنجی می‌شوند اما همچنان در سیستم‌های فاقد این قابلیت نیز کار می‌کنند. مقدار ویژه "help" می‌تواند برای فهرست کردن انواع کلیدهای پشتیبانی‌شده استفاده شود.

سوییچ -H یک میانبر برای --with-key=host است. به همین ترتیب، -T یک میانبر برای --with-key=tpm2 می‌باشد.

هنگام رمزنگاری اعتبارنامه‌هایی که قرار است در initrd استفاده شوند (جایی که /var/lib/systemd/ معمولاً در دسترس نیست)، حتماً از حالت --with-key=auto-initrd استفاده کنید تا مقیدسازی به کلید مخفی میزبان غیرفعال شود.

این سوییچ هیچ تأثیری بر دستور decrypt ندارد، زیرا اطلاعات مربوط به اینکه کدام کلید برای رمزگشایی استفاده شود از قبل در اعتبارنامه رمزشده گنجانده شده است.

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

--tpm2-device=PATH

دستگاه TPM2 مورد استفاده را کنترل می‌کند. انتظار یک مسیر گره دستگاه ارجاع‌دهنده به تراشه TPM2 را دارد (مانند /dev/tpmrm0). همچنین می‌توان مقدار ویژه "auto" را مشخص کرد تا گره دستگاه یک TPM2 مناسب (که باید دقیقاً یکی از آن وجود داشته باشد) به طور خودکار تعیین شود. مقدار ویژه "list" می‌تواند برای شمارش تمام دستگاه‌های TPM2 مناسبی که در حال حاضر کشف شده‌اند استفاده شود.

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

--tpm2-pcrs=PCR[+PCR...]

رجیسترهای PCR مربوط به TPM2 (ثبات‌های پیکربندی پلتفرم) را برای مقید کردن کلید رمزنگاری به آن‌ها پیکربندی می‌کند. فهرستی از نمایه‌های عددی PCR در محدوده 0...23 که با "+" از هم جدا شده‌اند را می‌پذیرد. اگر یک رشته خالی مشخص شود، کلید رمزنگاری به هیچ PCR مقید نمی‌شود (این حالت در صورت عدم استفاده از این گزینه نیز پیش‌فرض است). برای جزئیات در مورد PCRهای موجود، به مستندات سوییچی با همین نام در systemd-cryptenroll(1) مراجعه کنید.

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

--tpm2-public-key=PATH, --tpm2-public-key-pcrs=PCR[+PCR...]

یک خط‌مشی امضاشده PCR مربوط به TPM2 را برای مقید کردن رمزنگاری به آن، جهت استفاده با دستور encrypt پیکربندی می‌کند. گزینه --tpm2-public-key= یک مسیر به کلید عمومی RSA با کدگذاری PEM را برای مقید کردن رمزنگاری به آن می‌پذیرد. اگر این مورد به صراحت مشخص نشده باشد، اما فایلی با نام tpm2-pcr-public-key.pem در یکی از دایرکتوری‌های /etc/systemd/, /run/systemd/, /usr/lib/systemd/ (به ترتیب جستجو) وجود داشته باشد، به طور خودکار استفاده می‌شود. گزینه --tpm2-public-key-pcrs= فهرستی از نمایه‌های TPM2 PCR را برای مقیدسازی می‌پذیرد (با همان ساختار دستوری --tpm2-pcrs= که در بالا توضیح داده شد). اگر مشخص نشود، مقدار پیش‌فرض 11 است (یعنی این خط‌مشی به هر ایمیج یکپارچه هسته (UKIs) که بتوان برای آن یک امضای PCR ارائه داد مقید می‌شود).

به تفاوت بین --tpm2-pcrs= و --tpm2-public-key-pcrs= توجه کنید: اولی رمزگشایی را به مقادیر فعلی و خاص PCR مقید می‌کند؛ دومی رمزگشایی را به هر مجموعه‌ای از مقادیر PCR مقید می‌سازد که امضایی توسط کلید عمومی مشخص‌شده برای آن‌ها ارائه شود. بنابراین دومی در سناریوهایی مفیدتر است که به‌روزرسانی‌های نرم‌افزاری باید بدون از دست رفتن دسترسی به تمام اسرار رمزشده قبلی امکان‌پذیر باشد.

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

--tpm2-signature=PATH

مسیری را به یک فایل امضای TPM2 PCR می‌گیرد، همانطور که توسط ابزار systemd-measure(1) تولید می‌شود و می‌تواند برای اجازه دادن به دستور decrypt جهت رمزگشایی اعتبارنامه‌هایی که به مقادیر خاص امضاشده PCR مقید هستند استفاده شود. اگر این گزینه به طور صریح مشخص نشده باشد، و تلاش شود یک اعتبارنامه با خط‌مشی PCR امضاشده رمزگشایی شود، یک فایل امضای مناسب با نام tpm2-pcr-signature.json در /etc/systemd/, /run/systemd/, /usr/lib/systemd/ (به همین ترتیب) جستجو شده و استفاده می‌شود.

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

--allow-null

اجازه رمزگشایی اعتبارنامه‌هایی را می‌دهد که از یک کلید خالی (null) استفاده می‌کنند. به طور پیش‌فرض رمزگشایی اعتبارنامه‌های رمزنگاری/اصالت‌سنجی شده با کلید خالی تنها در صورتی مجاز است که UEFI SecureBoot خاموش باشد یا TPM2 در دسترس نباشد.

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

--refuse-null

رمزگشایی اعتبارنامه‌هایی را که از کلید خالی (null) استفاده می‌کنند، بدون در نظر گرفتن وضعیت UEFI SecureBoot یا در دسترس بودن TPM2 رد می‌کند (به بالا مراجعه کنید).

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

--quiet, -q

خروجی‌های اضافی را مهار می‌کند.

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

--no-pager

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

--no-legend

راهنما و توضیحات کمکی (شامل سرستون‌های جدول و پانوشت با نکات راهنما) را چاپ نمی‌کند.

--json=MODE

خروجی را با قالب‌بندی JSON نمایش می‌دهد. یکی از مقادیر "short" (برای کوتاه‌ترین خروجی ممکن بدون هیچ‌گونه فاصله خالی یا شکست خط اضافی)، "pretty" (برای نسخه خواناتر و زیباتر از همان، همراه با تورفتگی و شکست خط) یا "off" (برای غیرفعال کردن خروجی JSON، که پیش‌فرض است) را می‌پذیرد.

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

مثال ۱. رمزنگاری گذرواژه برای استفاده به عنوان اعتبارنامه

خط فرمان زیر گذرواژه مشخص‌شده "hunter2" را رمزنگاری کرده و نتیجه را در فایلی به نام password.cred می‌نویسد.

# echo -n hunter2 | systemd-creds encrypt - password.cred

این دستور فایل password.cred را مجدداً رمزگشایی کرده و گذرواژه اصلی را آشکار می‌کند:

# systemd-creds decrypt password.cred
hunter2

مثال ۲. رمزنگاری گذرواژه و گنجاندن آن در فایل واحد

خط فرمان زیر گذرواژه را از کاربر درخواست کرده و یک خط SetCredentialEncrypted= از آن برای اعتبارنامه‌ای به نام "mysql-password" تولید می‌کند که برای گنجاندن در فایل واحد مناسب است.

# systemd-ask-password -n | systemd-creds encrypt --name=mysql-password -p - -
🔐 Password: ****
SetCredentialEncrypted=mysql-password: \
        k6iUCUh0RJCQyvL8k8q1UyAAAAABAAAADAAAABAAAAASfFsBoPLIm/dlDoGAAAAAAAAAA \
        NAAAAAgAAAAAH4AILIOZ3w6rTzYsBy9G7liaCAd4i+Kpvs8mAgArzwuKxd0ABDjgSeO5k \
        mKQc58zM94ZffyRmuNeX1lVHE+9e2YD87KfRFNoDLS7F3YmCb347gCiSk2an9egZ7Y0Xs \
        700Kr6heqQswQEemNEc62k9RJnEl2q7SbcEYguegnPQUATgAIAAsAAAASACA/B90W7E+6 \
        yAR9NgiIJvxr9bpElztwzB5lUJAxtMBHIgAQACCaSV9DradOZz4EvO/LSaRyRSq2Hj0ym \
        gVJk/dVzE8Uxj8H3RbsT7rIBH02CIgm/Gv1ukSXO3DMHmVQkDG0wEciyageTfrVEer8z5 \
        9cUQfM5ynSaV2UjeUWEHuz4fwDsXGLB9eELXLztzUU9nsAyLvs3ZRR+eEK/A==

خط تولیدشده را می‌توان به صورت 1:1 در یک فایل واحد قرار داد و این کار تضمین می‌کند که گذرواژه به‌دست‌آمده در فایل اعتبارنامه $CREDENTIALS_DIRECTORY/mysql-password برای سرویس شروع‌شده در دسترس قرار می‌گیرد.

با بهره‌گیری از منطق drop-in فایل واحد، می‌توان از این روش برای ارسال ایمن اعتبارنامه گذرواژه به یک واحد استفاده کرد. یک مجموعه دستور مشابه و جامع‌تر برای قرار دادن یک گذرواژه در سرویس xyz.service:

# mkdir -p /etc/systemd/system/xyz.service.d
# systemd-ask-password -n | ( echo "[Service]" && systemd-creds encrypt --name=mysql-password -p - - ) >/etc/systemd/system/xyz.service.d/50-password.conf
# systemctl daemon-reload
# systemctl restart xyz.service

systemd(1), systemd.exec(5), systemd-measure(1)

1.
System and Service Credentials
systemd 261.2