Отдельный заголовок LUKS (на USB )для существующего устройства полного -шифрования диска с Ubuntu

Часть вашей проблемы заключается в отсутствии кавычек в этой строке, из-за чего содержимое $tи $pcrпомещается в одну строку, что делает pslпросто двумя длинными строками со многими слова в нем.

psl=$(sort <(echo $t) <(echo $pcr) | uniq)

Простым первым решением будет:

psl=$(sort <(echo "$t") <(echo "$pcr") | uniq)

Но тогда вы захотите повторить $pslпострочно (Я предполагаю, что вы обрабатываете его построчно, так как вы используете такие инструменты, как sort, uniqи comm.)

while read -r e ; do
    echo "$e"
done <<<"$psl"

На самом деле это становится намного проще, если вместо этого вы используете временные файлы:

echo "$t" | sort >t.sorted
echo "$nnpp" | sort >nnpp.sorted
comm -13 t.sorted nnpp.sorted >pcr
sort t.sorted pcr | uniq >psl
while read -r e ; do
    echo "$e"
done <psl

Кстати, так как pcrпросто содержит строки, уникальные в nnpp, а вы используете uniq, который должен избавиться от дубликатов между tи nnpp, возможно, вы можете обойтись гораздо более простым:

echo "$t" >t
echo "$nnpp" >nnpp
sort -u -o psl t nnpp

Обратите внимание, что флаг sortдля -uаналогичен конвейерной передаче через uniq, и что вы можете передать sortфлаг -o, чтобы указать имя файла, в который следует записать отсортированный вывод.

0
15.08.2021, 01:29
1 ответ

Как указано в комментариях @AB , решение представляет собой необработанный раздел, который содержит заголовок вместо файла заголовка внутри раздела (, что является проблемой из-за необходимости монтировать сначала файловая система)

Чтобы скопировать заголовок (размером около 16 МБ для LUKS2 )в раздел (/dev/sdb, превышающий размер заголовка ), есть два варианта.

  • Первый — скопировать необработанный заголовок с помощью dd.

Во-первых, вам нужно найти смещение данных (, так как заголовок всегда начинается с 0). Для устройства LUKS /dev/sda4используйте cryptsetup luksDump /dev/sda4и найдите линию смещения в секции Сегменты данных . Затем найдите размер блока файловой системы с помощью stat -fc %s /dev/sda4. И, наконец,dd if=/dev/sda4 of=/dev/sdb bs=<fs_block_size> count=<data_offset>

  • Второй — упаковать все данные заголовка в файл резервной копии, который будет скопирован в раздел /dev/sdb.

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

mkdir /tmp/header_backup
mount -t tmpfs -o size=512m tmpfs /tmp/header_backup
cryptsetup luksHeaderBackup /dev/sda4 --header-backup-file /tmp/header_backup/header.luks
dd if=/tmp/header_backup/header.luks of=/dev/sdb
umount /tmp/header_backup

Затем в /etc/crypttabдобавьте опцию header=/dev/sdbв соответствующую строку (, напримерsda4_crypt [UUID] none luks,discard,header=/dev/sdb)

Чтобы стереть старый заголовок LUKS:cryptsetup luksErase /dev/sda4. Это только стирает слоты для ключей, но сохраняет все метаданные. Если вы хотите (, нет необходимости )полностью стирать заголовок, вам понадобится другой заголовок файловой системы, чтобы сохранить UUID в этом разделе. Но имейте в виду, что полная очистка заголовка LUKS может не привести к безопасному удалению в зависимости от вашего устройства хранения (SSD или HDD ). Для SSD возможно, что удаленный блок останется в очереди до тех пор, пока устройству не потребуется выделить больше места.

В противном случае, чтобы стереть заголовок :, получите размер блока файловой системы(<fs_block_size>)с помощью stat -fc %s /dev/sda4, смещение данных LUKS(<luks_data_offset>)с помощью cryptsetup luksDump /dev/sdb,UUID раздела /dev/sda4(<uuid_sda4>), а затем:

dd if=/dev/urandom of=/dev/sda4 bs=<fs_block_size> count=<luks_data_offset>
mkfs.ext4 fs.img
tune2fs -U <uuid_sda4> fs.img
dd if=fs.img of=/dev/sda4

Раздел /dev/sdbбудет иметь тот же UUID, что и LUKS, что может быть проблемой. Вы можете изменить его, не нарушая процесс LUKS с помощьюcryptsetup luksUUID /dev/sdb --uuid $(uuidgen)

И, наконец, обновите initramfs с помощьюupdate-initramfs -u -k all

0
23.08.2021, 09:28

Теги

Похожие вопросы