| SYSTEMD-PCRLOCK(8) | systemd-pcrlock | SYSTEMD-PCRLOCK(8) |
نام (NAME)
systemd-pcrlock, systemd-pcrlock-file-system.service, systemd-pcrlock-firmware-code.service, systemd-pcrlock-firmware-config.service, systemd-pcrlock-machine-id.service, systemd-pcrlock-make-policy.service, systemd-pcrlock-secureboot-authority.service, systemd-pcrlock-secureboot-policy.service - ابزار پیشبینی و قفلگذاری خطمشیهای ثباتهای PCR مربوط به TPM2
خلاصه دستور (SYNOPSIS)
/usr/lib/systemd/systemd-pcrlock [OPTIONS...]
توضیحات (DESCRIPTION)
نکته: این دستور در حال حاضر آزمایشی است. اگرچه احتمال دارد به یک جزء دائمی از systemd تبدیل شود، اما ممکن است رفتار و رابط کاربری آن همچنان تغییر کند.
systemd-pcrlock ابزاری است که میتواند برای تحلیل و پیشبینی اندازهگیریهای PCR مربوط به TPM2، و تولید خطمشیهای دسترسی TPM2 بر اساس این پیشبینی که در یک نمایهٔ TPM2 NV (یعنی در حافظهٔ غیرفرار TPM2) ذخیره میشوند، به کار رود. سپس میتوان از این قابلیت برای محدود کردن دسترسی به اشیاء TPM2 (مانند کلیدهای رمزگذاری دیسک) به بوتهای سیستمی که در آنها فقط از اجزای مشخص و مورد اعتماد استفاده شده است، بهره برد.
systemd-pcrlock از موارد زیر به عنوان ورودی برای تحلیل و پیشبینی خود استفاده میکند:
این ابزار از این ورودیها برای تولید یک لاگ رویداد ترکیبی استفاده کرده و آن را در برابر وضعیتهای PCR اعتبارسنجی میکند. سپس تلاش میکند تا رکوردهای لاگ رویداد را شناسایی کرده و آنها را با اجزای تعریفشده تطبیق دهد. برای هر PCR که این کار بتواند بهطور کامل انجام شود (یعنی جایی که تمام رکوردهای فهرستشده و تمام اجزای تعریفشده مطابقت داده شده باشند)، این میتواند برای پیشبینی اندازهگیریهای آیندهٔ PCR با در نظر گرفتن گونههای جایگزین تعریفشده برای هر جزء مورد استفاده قرار گیرد. این پیشبینی سپس میتواند به یک خطمشی دسترسی TPM2 (شامل موارد PolicyPCR و PolicyOR مربوط به TPM2) تبدیل شود که در یک نمایهٔ NV در TPM2 ذخیره میگردد. سپس میتوان از این برای قفل کردن اسرار (مانند کلیدهای رمزگذاری دیسک) به این خطمشیها (از طریق خطمشی PolicyAuthorizeNV در TPM2) استفاده کرد.
از ابزارهایی مانند systemd-cryptenroll(1) یا systemd-repart(8) برای مقید کردن رمزگذاری دیسک به چنین خطمشی TPM2 از systemd-pcrlock استفاده کنید. بهویژه، گزینههای --tpm2-pcrlock= این ابزارها را ببینید.
منطق خطمشی دسترسی نیازمند یک دستگاه TPM2 است که دستور "PolicyAuthorizeNV" را پیادهسازی کرده باشد، یعنی نسخهٔ 1.38 از TPM 2.0 یا جدیدتر را پیادهسازی کند.
دستورات (COMMANDS)
دستورات زیر پشتیبانی میشوند:
log
اضافهشده در نسخهٔ 255.
cel
اضافهشده در نسخهٔ 255.
list-components
اضافهشده در نسخهٔ 255.
predict
اضافهشده در نسخهٔ 255.
make-policy
نمایهٔ NV در نخستین فراخوانی تخصیص داده شده و در فراخوانیهای بعدی بهروزرسانی میشود.
محتوای نمایهٔ NV را میتوان با ارائهٔ یک پین (PIN) دسترسی تغییر داد (و در نتیجه خطمشی ذخیرهشده در آن را بهروزرسانی کرد). این پین معمولاً بهطور خودکار تولید شده و بهصورت رمزگذاریشده (با یک خطمشی دسترسی که آن را به خود نمایهٔ NV مقید میکند) در فایل خطمشی JSON یادشده ذخیره میشود. این پین میتواند توسط کاربر و از طریق گزینهٔ --recovery-pin= انتخاب شود. در صورت مشخص شدن، میتوان از آن به عنوان یک مسیر دسترسی جایگزین برای بهروزرسانی خطمشی استفاده کرد.
اگر پیشبینی جدید با پیشبینی قدیمی مطابقت داشته باشد، این دستور بهسرعت خاتمه مییابد و عملیات دیگری انجام نمیدهد. (مگر اینکه --force مشخص شده باشد، به زیر مراجعه کنید.)
با شروع از نسخهٔ ۲۵۶، یک کپی از فایل خطمشی /var/lib/systemd/pcrlock.json به صورت یک دادهٔ اعتبارسنجی (credential) کدگذاری شده (برای جزئیات systemd-creds(1) را ببینید) و در پارتیشن سیستم EFI یا پارتیشن XBOOTLDR، در زیرپوشهٔ /loader/credentials/ نوشته میشود. در آنجا، در هنگام بوت توسط systemd-stub(7) خوانده شده و به initrd فراخوانیشده تحویل داده میشود، جایی که میتوان از آن برای باز کردن قفل فایلسیستم ریشه استفاده کرد (که معمولاً شامل /var/ است، یعنی جایی که نسخهٔ اصلی خطمشی قرار دارد و بنابراین نمیتوان از آن برای باز کردن قفل فایلسیستم ریشه استفاده نمود). نام فایل اعتبارسنجی بر اساس نشانهٔ مدخل بوت (boot entry token) نصب انتخاب میشود (به bootctl(1) مراجعه کنید)، که از طریق گزینهٔ --entry-token= قابل پیکربندی است، به زیر مراجعه کنید.
اضافهشده در نسخهٔ 255.
remove-policy
اضافهشده در نسخهٔ 255.
is-supported
در صورت ترکیب با --quiet، از چاپ رشته در خروجی جلوگیری میکند.
در حال حاضر، این دستور پشتیبانی از دستور TPM2 با نام PolicyAuthorizeNV و همچنین پشتیبانی از الگوریتم درهمسازی SHA-256 را بررسی میکند.
اضافهشده در نسخهٔ 258.
lock-firmware-code، unlock-firmware-code
این عملیات اجازه میدهد فرایند بوت به نسخهٔ فعلی سفتافزار سیستم و کارتهای جانبی آن قفل شود. از این عملیات فقط در صورتی باید استفاده شود که سازندهٔ سیستم دادههای pcrlock مناسب را از قبل ارائه نکرده باشد.
توجه داشته باشید که این دادهها فقط با نسخهٔ فعلی سفتافزار مطابقت دارند. در صورت اعمال بهروزرسانی سفتافزار، این دادهها منسوخ شده و هرگونه خطمشی دسترسی تولیدشده از آنها دیگر تأیید نخواهد شد. بنابراین توصیه میشود قبل از انجام بهروزرسانی سفتافزار، دستور unlock-firmware-code و به دنبال آن make-policy را برای نوسازی خطمشی فراخوانی کنید.
دستور systemd-pcrlock lock-firmware-code در صورت فعال بودن، در زمان بوت بهطور خودکار از طریق واحد systemd-pcrlock-firmware-code.service فراخوانی میشود. این امر تضمین میکند که خطمشی دسترسی مدیریتشده توسط systemd-pcrlock، هر زمان که خطمشی برای پوشش بهروزرسانیهای سفتافزار موقتاً آزاد شده باشد (همانطور که در بالا توضیح داده شد)، بهطور خودکار روی نسخهٔ جدید سفتافزار قفل شود.
این فایلها فقط در صورتی از روی لاگ رویداد تولید میشوند که لاگ رویداد با وضعیت فعلی ثباتهای PCR مربوط به TPM2 مطابقت داشته باشد.
این دستور فایلهای /var/lib/pcrlock.d/250-firmware-code-early.pcrlock.d/generated.pcrlock و /var/lib/pcrlock.d/550-firmware-code-late.pcrlock.d/generated.pcrlock را مینویسد یا حذف میکند.
اضافهشده در نسخهٔ 255.
lock-firmware-config، unlock-firmware-config
از این قابلیت باید با احتیاط استفاده شود چرا که در اکثر سناریوها یک تغییر جزئی در پیکربندی سفتافزار نباید خطمشیهای دسترسی به اشیاء TPM2 را باطل کند. همچنین توجه داشته باشید که برخی از سیستمها اطلاعات ناپایدار و غیرقابل پیشبینی (مانند ولتاژهای فعلی پردازنده، دماها، به عنوان بخشی از دادههای SMBIOS) را در این PCRها اندازهگیری میکنند، که بدین معناست این شیوهٔ قفلگذاری روی چنین سیستمهایی به شکل پایدار قابل استفاده نیست. تنها در صورتی از این قابلیت استفاده کنید که سیستم و سختافزار بهخوبی شناختهشده باشند و از این محدودیتها متأثر نشوند، به عنوان نمونه در محیطهای مجازیسازیشده.
پیش از ایجاد تغییرات در پیکربندی سفتافزار از unlock-firmware-config استفاده کنید. اگر واحد systemd-pcrlock-firmware-config.service فعال باشد، بهطور خودکار یک فایل pcrlock از روی اندازهگیریهای جدید تولید خواهد کرد.
این دستور فایلهای /var/lib/pcrlock.d/250-firmware-config-early.pcrlock.d/generated.pcrlock و /var/lib/pcrlock.d/550-firmware-config-late.pcrlock.d/generated.pcrlock را مینویسد یا حذف میکند.
اضافهشده در نسخهٔ 255.
lock-secureboot-policy، unlock-secureboot-policy
پیش از اعمال بهروزرسانیهای خطمشی SecureBoot از unlock-firmware-config استفاده کنید. اگر واحد systemd-pcrlock-secureboot-policy.service فعال باشد، بهطور خودکار یک فایل pcrlock از خطمشی کشفشده تولید خواهد کرد.
این دستور فایل /var/lib/pcrlock.d/230-secureboot-policy.pcrlock.d/generated.pcrlock را مینویسد یا حذف میکند.
اضافهشده در نسخهٔ 255.
lock-secureboot-authority، unlock-secureboot-authority
این دستور فایل /var/lib/pcrlock.d/620-secureboot-authority.pcrlock.d/generated.pcrlock را مینویسد یا حذف میکند.
اضافهشده در نسخهٔ 255.
lock-gpt [DEVICE]، unlock-gpt
این دستور فایل /var/lib/pcrlock.d/600-gpt.pcrlock.d/generated.pcrlock را مینویسد یا حذف میکند.
اضافهشده در نسخهٔ 255.
lock-pe [BINARY]، unlock-pe
مسیر فایل باینری PE را به عنوان آرگومان انتظار دارد. در صورت عدم تعیین، باینری را از ورودی استاندارد (STDIN) میخواند.
فایل pcrlock برای نوشتن باید از طریق گزینهٔ --pcrlock= مشخص شود.
اضافهشده در نسخهٔ 255.
lock-uki [UKI]، unlock-uki
مسیر فایل باینری UKI PE را به عنوان آرگومان انتظار دارد. در صورت عدم تعیین، باینری را از ورودی استاندارد (STDIN) میخواند.
فایل pcrlock برای نوشتن باید از طریق گزینهٔ --pcrlock= مشخص شود.
اضافهشده در نسخهٔ 255.
lock-machine-id، unlock-machine-id
این دستور فایل /var/lib/pcrlock.d/820-machine-id.pcrlock را مینویسد یا حذف میکند.
اضافهشده در نسخهٔ 255.
lock-file-system [PATH]، unlock-file-system [PATH]
این دستور فایلهای /var/lib/pcrlock.d/830-root-file-system.pcrlock و /var/lib/pcrlock.d/840-file-system-path.pcrlock را مینویسد یا حذف میکند.
اضافهشده در نسخهٔ 255.
lock-kernel-cmdline [FILE]، unlock-kernel-cmdline
این دستور فایل /var/lib/pcrlock.d/710-kernel-cmdline.pcrlock/generated.pcrlock را مینویسد یا حذف میکند.
اضافهشده در نسخهٔ 255.
lock-kernel-initrd FILE، unlock-kernel-initrd
این دستور فایل /var/lib/pcrlock.d/720-kernel-initrd.pcrlock/generated.pcrlock را مینویسد یا حذف میکند.
اضافهشده در نسخهٔ 255.
lock-raw [FILE]، unlock-raw
اضافهشده در نسخهٔ 255.
گزینهها (OPTIONS)
گزینههای زیر پشتیبانی میشوند:
--raw-description
اضافهشده در نسخهٔ 255.
--pcr=
این گزینه توسط lock-raw و lock-pe برای انتخاب PCR جهت قفلگذاری استفاده میشود.
در صورت استفاده با predict و make-policy، این گزینه بازنویسی میکند که کدام PCRها در پیشبینی و خطمشی گنجانده شوند. در صورت عدم تعیین، بهطور پیشفرض ثباتهای PCR شمارهٔ 0-5، 7، 11، 13-15 انتخاب میشوند. توجه داشته باشید که این دستورات در صورتی که اندازهگیریهایی در لاگ رویداد وجود داشته باشد که با مقدار فعلی PCR مطابقت نداشته باشد، یا اندازهگیریهای ناشناختهای در لاگ رویداد باشد، یا اجزا اندازهگیریهایی را تعریف کنند که در لاگ رویداد دیده نشده است، هیچ PCRی را در پیشبینی/خطمشی لحاظ نخواهند کرد (حتی اگر بهصراحت مشخص شده باشند).
اضافهشده در نسخهٔ 255.
--nv-index=
اضافهشده در نسخهٔ 255.
--components=
اضافهشده در نسخهٔ 255.
--location=
در صورت استفاده با list-components، محدودهٔ مکان انتخابشده در فهرست اجزا برجسته میشود.
بهطور پیشفرض "760-:940-" است، که بدین معنی است خطمشیهای تولیدشده بهطور پیشفرض اساساً کل زمان اجرای فضای کاربری سیستمعامل را پوشش میدهند؛ از initrd (زیرا "760-" بلافاصله بعد از 750-enter-initrd.pcrlock میآید) تا (و از جمله) زمان اجرای اصلی سیستم (زیرا بعد از "940-" بلافاصله 950-shutdown.pcrlock میآید). برای فهرست کامل اجزای شناختهشده که نشان میدهند این محدوده بهطور پیشفرض در کجا قرار گرفته است، systemd.pcrlock(5) را ببینید.
اضافهشده در نسخهٔ 255.
--recovery-pin=
اضافهشده در نسخهٔ 255.
--pcrlock=
اضافهشده در نسخهٔ 255.
--policy=
اضافهشده در نسخهٔ 255.
--force
اضافهشده در نسخهٔ 255.
--entry-token=
اضافهشده در نسخهٔ 256.
--quiet
اضافهشده در نسخهٔ 258.
--json=MODE
--no-pager
-h, --help
--version
وضعیت خروج (EXIT STATUS)
در صورت موفقیت، 0 بازگردانده میشود؛ در غیر این صورت یک کد خطای غیرصفر بازمیگردد.
همچنین ببینید (SEE ALSO)
systemd(1), systemd.pcrlock(5), systemd-cryptenroll(1), systemd-cryptsetup@.service(8), systemd-repart(8), systemd-pcrmachine.service(8), systemd-creds(1), systemd-stub(7), bootctl(1)
نکات (NOTES)
- 1.
- TCG Canonical Event Log Format (CEL-JSON)
| systemd 261.2 |