دستورات
زیر
پشتیبانی
میشوند:
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، که
پیشفرض
است) را
میپذیرد.
مثال ۱. رمزنگاری
گذرواژه
برای
استفاده به
عنوان
اعتبارنامه
خط فرمان
زیر
گذرواژه
مشخصشده
"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