| SBCTL(8) | SBCTL(8) |
نام (NAME)
sbctl - مدیر بوت امن (Secure Boot)
خلاصه (SYNOPSIS)
sbctl <command>
شرح (DESCRIPTION)
sbctl ابزاری است که امکان ایجاد کلیدها برای بوت امن، ثبت امن آنها و رهگیری فایلهای نیازمند امضا را فراهم میسازد.
دستورهای امضای ایافآی (EFI SIGNING COMMANDS)
status
create-keys
-e, --export
-d, --database-path
enroll-keys
توجه داشته باشید که برخی دستگاهها دارای سفتافزار سختافزاری هستند که هنگام فعال بودن بوت امن امضا و اعتبارسنجی میشوند. عدم اعتبارسنجی این سفتافزار میتواند منجر به از کار افتادن کامل (brick) دستگاهها شود. توصیه میشود کلیدهای اختصاصی خود را همراه با گواهیهای مایکروسافت ثبت نمایید.
-m, --microsoft
ببینید Option ROM*.
-t, --tpm-eventlog
ببینید Option ROM*.
این قابلیت آزمایشی است.
-c, --custom
-f, --firmware-builtin
مقادیر معتبر شامل "db"، "KEK" یا "PK" هستند که به صورت رشتهای جداشده با کاما ارسال میشوند.
پیشفرض: "db,KEK"
--yes-this-might-brick-my-machine, --yolo
ببینید Option ROM*.
-i, --ignore-immutable
--export
مقادیر معتبر عبارتند از: esl, auth.
-p, --partial
مقادیر معتبر عبارتند از: db, KEK, PK.
--custom-bytes
-a, --append
--keytype
پیشفرض: file
مقادیر معتبر عبارتند از: file, tpm
--pk-keytype
پیشفرض: file
مقادیر معتبر عبارتند از: file, tpm
--kek-keytype
پیشفرض: file
مقادیر معتبر عبارتند از: file, tpm
--db-keytype
پیشفرض: file
مقادیر معتبر عبارتند از: file, tpm
sign <FILE>...
-o PATH, --output PATH
-s, --save
sign-all
-g, --generate
import-keys
--db-cert PATH
--db-key PATH
--kek-cert PATH
--kek-key PATH
--pk-cert PATH
--pk-key PATH
--directory PATH
--force
list-files, ls-files, ls
remove-file <FILE>, rm-file <FILE>, rm <FILE>
list-enrolled-keys, ls-enrolled-keys
verify [FILE...]
reset
-p, --partial
مقادیر معتبر عبارتند از: db, KEK, PK.
rotate-keys
--backup-dir PATH
-p, --partial
مقادیر معتبر عبارتند از: db, KEK, PK.
-k, --key-file
-c, --cert-file
--keytype
پیشفرض: file
مقادیر معتبر عبارتند از: file, tpm
--pk-keytype
پیشفرض: file
مقادیر معتبر عبارتند از: file, tpm
--kek-keytype
پیشفرض: file
مقادیر معتبر عبارتند از: file, tpm
--db-keytype
پیشفرض: file
مقادیر معتبر عبارتند از: file, tpm
export-enrolled-keys
--dir PATH
--format TYPE
پیشفرض: der مقادیر معتبر: esl, auth.
setup
این دستور پیکربندی تعریفی sbctl را از طریق فایل پیکربندی فعال میکند. همچنین میتواند پیکربندی فعلی و وضعیت کنونی نصب را چاپ کند.
--setup
این گزینه به طور خودکار دستورهای create-keys و enroll-keys را انجام داده و همچنین پایگاهداده فایلها را برای امضا راهاندازی میکند.
برای جزئیات بیشتر به sbctl.conf(5) مراجعه کنید.
--migrate
در حال حاضر تنها مهاجرت برای sbctl انتقال از /usr/share/secureboot به /var/lib/sbctl است.
--print-config
برای جزئیات بیشتر به sbctl.conf(5) مراجعه کنید.
--print-state
نکته: این گزینه نیازمند ارسال --json است.
help
دستورهای باینری ایافآی (EFI BINARY COMMANDS)
bundle [FLAGS] <NAME>
-a PATH, --amducode PATH
-c PATH, --cmdline PATH
-e PATH, --efi-stub PATH
-p PATH, --esp PATH
-h, --help
-f PATH, --initramfs PATH
-i PATH, --intelucode PATH
-k PATH, --kernel-img PATH
-o PATH, --os-release PATH
-s, --save
-l PATH, --splash-img PATH
generate-bundles
-s, --sign
remove-bundle <NAME>, rm-bundle <NAME>
list-bundles, ls-bundle
گزینهها (OPTIONS)
-j, --json
-c, --config
پیشفرض: /etc/sbctl/sbctl.conf
--disable-landlock
ببینید landlock(7).
--debug
بستهها (BUNDLES)
نکته: این ویژگی منسوخ شده است. لطفاً به dracut/mkinitcpio/ukify مهاجرت کنید.
معمولاً فقط هسته با کلیدهای بوت امن شما امضا میشود. این بدان معناست که خط فرمان هسته و initramfs میتوانند بدون امکان اعتبارسنجی تغییر یابند.
بستهها فایلهای اجرایی EFI هستند که هر سه مورد (initramfs، kernel و cmdline) را در یک فایل منفرد بستهبندی میکنند که امضای آن آسان است. اجتناب از هرگونه فایل امضانشده در حین بوت، کل فرایند را در برابر دستکاری مقاومتر میسازد.
هنگامی که یک بسته تولید میشود، پیکربندی آن در پایگاهداده بستهها ذخیره میگردد (به بخش فایلها (FILES) مراجعه کنید). اجراهای بعدی دستور sbctl generate-bundles این بستهها را مجدداً میسازد، بنابراین نیازی نیست پس از هر بهروزرسانی سیستم تمام پارامترها را دوباره مشخص کنید.
نکته کاربردی: ابزار systemd-boot به طور خودکار ورودیهای مربوط به هر بستهای را که در esp/EFI/Linux/*.efi یافت شود نمایش میدهد.
انواع کلید پشتیبانیشده (SUPPORTED KEY TYPES)
در حال حاضر sbctl از ذخیره کلیدها به عنوان فایلهای ساده رمزنگارینشده یا کلیدهای محافظتشده با TPM پشتیبانی میکند.
فایلهای ساده رمزنگارینشده (file) فقط باید زمانی استفاده شوند که پارتیشن ریشه رمزگذاری شده باشد. این نوع کلید به دلایل تاریخی حالت پیشفرض است. کلیدهای فایلی به صورت ثابت روی RSA 4096 تنظیم شدهاند.
کلیدهای محافظتشده با TPM موسوم به (tpm) درون TPM محافظت میشوند و در صورت وجود یک TPM دردسترس روی سیستم قابل استفاده هستند. سیاستهای TPM پشتیبانی نمیشوند، به این معنی که نمیتوان کلیدها را نسبت به وضعیت سیستم مهروموم (seal) کرد. توجه داشته باشید که کلیدهای TPM به صورت ثابت روی RSA 2048 تنظیم شدهاند که معمولاً بالاترین قدرت بیتی پشتیبانیشده توسط TPMها است.
هنگام ایجاد سلسلهمراتب کلید برای بوت امن، کاربر میتواند تصمیم بگیرد که هر یک از کلیدها در سلسلهمراتب چه نوع کلیدی دریافت کنند. از آنجا که TPMها در امضا کردن میتوانند کند باشند، معمولاً توصیه میشود PK و KEK در TPM نگهداری شوند، در حالی که کلید db میتواند یک کلید استاندارد file باشد.
توجه داشته باشید که در حال حاضر محافظت با رمز عبور پشتیبانی نمیشود.
لندلاک (LANDLOCK)
ابزار sbctl از landlock پشتیبانی میکند و تلاش خواهد کرد تا در طول اجرا، دسترسی به مسیرهای فایل را به بخشهایی که مورد نیاز است محدود کند. هرگونه تلاش برای برقراری دسترسی شبکه نیز محدود میشود.
این ویژگی را میتوان با تنظیم landlock: false در فایل پیکربندی یا با ارسال --disable-landlock به sbctl غیرفعال کرد.
رام اختیاری (OPTION ROM)
ببینید https://github.com/Foxboron/sbctl/wiki/FAQ#option-rom
کاربرد (USAGE)
نکته: برای استفاده از کلیدهای سفارشی بوت امن، مهم است که سیستم را به تنظیمات سفتافزار ریبوت کنید (systemctl reboot --firmware-setup) و به منوی Secure Boot بروید تا وارد Setup Mode شوید. این کار معمولاً با پاک کردن/حذف کلیدهای بوت امن (یا حداقل Platform Key) در حالی که حالت بوت امن فعال باقی مانده انجام میشود. برخی سفتافزارها دارای یک Custom Mode هستند که فقط اعتبارسنجی امضا را غیرفعال میکند و بنابراین نباید فعال شود مگر اینکه راه دیگری برای ورود به مدیریت کلید ارائه نشده باشد. اگر این مرحله کامل نشود، ثبت کلیدهای سفارشی توسط سفتافزار رد خواهد شد.
گام بعدی ایجاد کلیدها برای بوت امن است. دستور create-keys سلسلهمراتب کلید موردنیاز برای بوت امن را در "/var/lib/sbctl/keys" ایجاد میکند.
# sbctl create-keys Created Owner UUID a9fbbdb7-a05f-48d5-b63a-08c5df45ee70 Creating secure boot keys...✔ Secure boot keys created!
گام بعدی ثبت کلیدها در سفتافزار EFI است. ابزار sbctl انجام این کار را روی یک سیستم زنده پشتیبانی میکند، بدون اینکه نیازی به بوت یا اجرای ابزار مدیریت کلید از پوسته UEFI باشد.
نکته: این کار ممکن است به دلیل مشکلات سفتافزار و گزینههای منحصربهفرد در منوی BIOS دستگاه با شکست مواجه شود. همچنین، برخی دستگاهها دارای سفتافزار سختافزاری هستند که هنگام فعال بودن بوت امن امضا و اعتبارسنجی میشوند. عدم اعتبارسنجی این سفتافزار میتواند منجر به از کار افتادن کامل دستگاهها شود. توصیه میشود کلیدهای خود را همراه با گواهیهای مایکروسافت با استفاده از گزینه -m ثبت کنید. به بخش Option ROM* در بالا مراجعه نمایید.
# sbctl enroll-keys Enrolling keys to EFI variables...✔ Enrolled keys to the EFI variables!
پس از ثبت موفقیتآمیز کلیدها، باید زنجیره بوت فعلی خود را امضا کنیم. به طور سنتی در سیستمهای UEFI میتوان یک پارتیشن سیستم EFI موسوم به (ESP) در مسیرهای /efi، /boot یا /boot/efi داشت. معمولاً میتوان با نگاه کردن به نقاط اتصال (mount points) یا یافتن دایرکتوری EFI روی ESP، مسیر صحیح را پیدا کرد.
مهمترین فایل برای امضا، هسته (kernel) است. این مسیر میان توزیعهای مختلف متفاوت است اما معمولاً در ESP یا /boot یافت میشود. ما از --save برای ذخیره مسیر فایل استفاده میکنیم، بنابراین نیازی نیست بعداً آن را به صورت دستی امضا کنیم.
توجه داشته باشید که sbctl تنها میتواند مسیرهای فایل را رهگیری کند. روی هستههای دارای شماره نسخه ممکن است این امر پیچیده باشد.
# sbctl sign --save /efi/vmlinuz-linux ✔ Signed /efi/vmlinuz-linux
گام بعدی امضای بوتلودر است. معمولاً میتوان آن را در مسیر استاندارد زیر یافت، اما ممکن است بین نصبهای مختلف متفاوت باشد.
# sbctl sign --save /efi/EFI/BOOT/BOOTX64.EFI ✔ Signed /efi/EFI/BOOT/BOOTX64.EFI
ابزار sbctl قادر است ESP را به همراه تمام فایلهای ذخیرهشده پیدا و بررسی کند تا تأیید نماید فایلهای موردنیاز را امضا کردهایم.
# sbctl verify Verifying file database and EFI images in /efi... ✔ /efi/EFI/BOOT/BOOTX64.EFI is signed ✔ /efi/vmlinuz-linux is signed
پس از اینکه مطمئن شدیم همه چیز کار میکند، میتوانیم ریبوت کنیم. پس از ورود مجدد به سیستم، میتوانیم وضعیت سیستم را بررسی کنیم. نیازی به فعالسازی مجدد بوت امن یا ورود به User Mode در سفتافزار نخواهد بود.
$ sbctl status Installed: ✓ sbctl is installed Owner GUID: a7b893cc-949d-408c-b5cc-6e7d0370fdb6 Setup Mode: ✓ Disabled Secure Boot: ✓ Enabled
هنگام بهروزرسانی سیستم، میتوانیم sign-all را اجرا کنیم تا تمام فایلهای ذخیرهشده از قبل دوباره امضا شوند.
# sbctl sign-all File has already been signed /boot/vmlinuz-linux ✓ Signed /efi/EFI/BOOT/BOOTX64.EFI
ابزار sbctl از ساخت تصاویر هسته یکپارچه (unified kernel images) پشتیبانی میکند. این فایلهای اجرایی UEFI بخشهای initramfs، kernel و cmdline را در یک فایل اجرایی بستهبندی میکنند که میتواند برای بوت امن امضا شود. این کار به شما امکان میدهد بخشهای بزرگتری از زنجیره بوت را به جای امضا کردن صِرف هسته، اصالتسنجی کنید.
# sbctl bundle -i /boot/intel-ucode.img
-l /usr/share/systemd/bootctl/splash-arch.bmp
-k /boot/vmlinuz-linux
-f /boot/initramfs-linux-lts.img
-c /etc/kernel/cmdline
/efi/EFI/Linux/linux-linux.efi
توجه داشته باشید که dracut(8) و mkinitcpio(8) از قابلیتهای هسته یکپارچه پشتیبانی میکنند و باید نسبت به پیادهسازی sbctl ترجیح داده شوند. این قابلیت عمدتاً برای مواردی ارائه شده است که این ویژگی توسط تولیدکننده initramfs توزیع پشتیبانی نمیشود.
نکات (NOTES)
تمام دستورهایی که آرگومان مسیر میگیرند، هنگام ذخیره در پایگاهداده آنها را به مسیرهای مطلق تبدیل میکنند.
وضعیت خروج (EXIT STATUS)
در صورت موفقیت 0، و در غیر این صورت کد شکست غیرصفر بازگردانده میشود.
متغیرهای محیطی (ENVIRONMENT VARIABLES)
SYSTEMD_ESP_PATH, ESP_PATH
SBCTL_UNICODE
فایلها (FILES)
/etc/sbctl/sbctl.conf: فایل پیکربندی پیشفرض. ببینید sbctl.conf(5)
/var/lib/sbctl
/var/lib/sbctl/GUID
/var/lib/sbctl/files.db
/var/lib/sbctl/bundles.db
/var/lib/sbctl/keys/db/db.{pem,key}
/var/lib/sbctl/keys/KEK/KEK.{pem,key}
/var/lib/sbctl/keys/PK/PK.{pem,key}
/var/lib/sbctl/keys/custom/KEK/*
/var/lib/sbctl/keys/custom/db/*
همچنین ببینید (SEE ALSO)
نویسندگان (AUTHORS)
| 08/10/2026 |