Как настроить скрипт “cryptroot”?

Вопрос или проблема

У меня есть система, в которой все разделы (/, /home и swap) зашифрованы, кроме /boot. /boot находится на внешнем устройстве, которое также содержит набор зашифрованных ключевых файлов, используемых для автоматического расшифрования всех разделов. Другими словами, я хотел бы получить двухфакторную аутентификацию с использованием внешнего устройства и пароля, который вводится один раз при загрузке, а загрузочные сценарии используют этот пароль для расшифровки всех разделов.

Я новичок в Ubuntu (и в Linux в общем), но я поэкспериментировал с модификацией различных сценариев, найденных в initrd.img, с помощью update-initramfs. Сценарий cryptroot на первый взгляд, казался тем, кто выполняет всю работу по монтированию разделов, но после некоторых экспериментов оказалось, что он отвечает только за расшифровку корневой файловой системы. Я изменил строку в сценарии, заменив Введите пароль на просто Пароль, что, казалось, работало, когда расшифровывалась корневая файловая система, но снова использовался старый запрос для расшифровки следующего раздела. Другими словами, это то, что я получаю:

  1. Сценарий cryptroot загружается.
  2. Сценарий запрашивает пароль для расшифровки ключевого раздела и монтирует его.
  3. Сценарий вызывает функцию setup_mapping для расшифровки корневой файловой системы.
  4. Сценарий пытается прочитать ключевой файл из ключевого раздела для расшифровки корневой файловой системы.
  5. Корневая файловая система расшифрована и смонтирована.
  6. Система предлагает ввести пароль для расшифровки следующего раздела…

Я думаю, что Ubuntu может запускать другую копию сценария cryptroot где-то, чтобы расшифровать все остальные разделы после корневого, но я не знаю, что еще можно изменить.

Сначала узнайте, где находится cryptroot, какой пакет предоставляет cryptroot и что еще (исходники, документация, примеры и т.п.) содержится в пакете. Для этого:

walt@squid:~(0)$ locate cryptroot
/usr/share/initramfs-tools/hooks/cryptroot
/usr/share/initramfs-tools/scripts/local-top/cryptroot
walt@squid:~(0)$ dpkg -S !$
dpkg -S cryptroot
cryptsetup: /usr/share/initramfs-tools/hooks/cryptroot
cryptsetup: /usr/share/initramfs-tools/scripts/local-top/cryptroot
walt@squid:~(0)$ dpkg -L cryptsetup
...

Ответ waltinator дает хорошее начало – выяснить, где сценарий находится в вашей файловой системе. Используйте любой инструмент поиска файлов, который у вас есть, и найдите нужный сценарий. Например, с помощью fd вы можете искать в (обычных местах?) /etc и /usr:

fd cryptroot /etc
fd cryptroot /usr

Затем измените один или все эти сценарии – не уверен, как надежно определить, какой из них используется, я был заинтересован только в том, что находится под /usr/share/initramfs-tools/scripts/local-top, так как мои логи сообщали мне о проблеме там.

Наконец, обновите / регенерируйте файловые системы initram, в ubuntu 22.04 с помощью:

sudo update-initramfs -c -k all

Я просто вставил несколько операторов echo для отладки; тем не менее, уже во время вызова update-initramfs эти операторы echo выполнялись, и я мог видеть их вывод! Это может быть способом проверить, включен ли сценарий, который вы изменили, или нет.

Ответ или решение

Чтобы настроить скрипт cryptroot для вашего случая с двойной аутентификацией (внешнее устройство и пароль), вам нужно выполнить несколько шагов. Прежде всего, вы правильно заметили, что скрипт отвечает за расшифровку корневой файловой системы и может не обрабатывать расшифровку других зашифрованных разделов должным образом.

Вот пошаговая инструкция:

  1. Найдите местоположение скрипта cryptroot:

    Вы можете использовать команду locate для поиска местоположения скрипта cryptroot, чтобы убедиться, где он находится и какие именно файлы вам нужно изменять:

    locate cryptroot

    Это должно показать вам пути к файлам, например:

    /usr/share/initramfs-tools/hooks/cryptroot
    /usr/share/initramfs-tools/scripts/local-top/cryptroot
  2. Определите, какие пакеты содержат скрипт:

    Далее используйте команду dpkg для получения информации о пакете, который предоставляет эти скрипты:

    dpkg -S /usr/share/initramfs-tools/scripts/local-top/cryptroot

    Это покажет, что они являются частью пакета cryptsetup.

  3. Измените скрипт cryptroot:

    В вашем случае, вероятно, вам стоит изменить один из скриптов в каталоге /usr/share/initramfs-tools/scripts/local-top/cryptroot. Найдите строку, которая отвечает за запрос пароля, и замените текст на желаемый. Например, если хотите изменить "Enter the passphrase" на "Password", сделайте следующее:

    sudo nano /usr/share/initramfs-tools/scripts/local-top/cryptroot

    После внесения изменений сохраните файл.

  4. Добавьте обработку для дополнительных разделов:

    Вы можете добавить дополнительные функции в этот скрипт для расшифровки дополнительных разделов (например, /home, swap). Используйте существующую логику как пример для добавления дополнительных запросов необходимости ввода пароля для расшифровки остальных разделов.

  5. Обновите файловую систему initramfs:

    После внесения изменений необходимо обновить образ initramfs, чтобы применить новые настройки:

    sudo update-initramfs -c -k all

    Это создаст новый образ initramfs с вашими изменениями. Чтобы убедиться, что ваш скрипт включен и работает, вы можете включить отладочные команды, такие как echo, чтобы выводить сообщения в процессе загрузки. Таким образом, вы будете видеть, запускается ли ваш измененный скрипт.

  6. Тестирование:

    Перезагрузите систему и проверьте, работает ли ваш скрипт как задумано. Убедитесь, что он запрашивает пароль только один раз во время загрузки и расшифровывает все нужные разделы.

  7. Дополнительные рекомендации:

    Если вы все еще сталкиваетесь с проблемами, вам могут помочь журналы загрузки (например, с помощью journalctl) для поиска проблем с расшифровкой. Также рассмотрите возможность создания резервных копий важных данных перед внесением изменений в загрузочную конфигурацию.

Следуя этим шагам, вы сможете настроить скрипт cryptroot так, чтобы он подходил под ваши требования.

Оцените материал
Добавить комментарий

Капча загружается...