LUKS и петлевое устройство

LUKS и петлевое устройство

Я прочитал много руководств по LUKS/dm-crypt/cryptsetup, в частности о том, как создать зашифрованный файловый контейнер.

Первый шаг — создать файл с расширением dd.

Затем некоторые руководства сопоставляют файл с /dev/loop0устройством loop и форматируют его, другие руководства форматируют файл напрямую, не сопоставляя его с устройством loop.

Мой вопрос: Нужен ли шаг устройства петли? В чем разница?

решение1

Вы можете использовать ddили fallocate(или headили несколько других инструментов) для создания файла, который будет действовать как ваш контейнер. Затем, как сказал Винсент Ю, cryptsetupон может справиться с настройкой/демонтажем цикла для вас.

fallocate -l 100M mypath/filecontainer
sudo losetup # Debug for demonstration, not necessary in a real script
sudo cryptsetup -y luksFormat mypath/filecontainer
sudo losetup # Debug for demonstration, not necessary in a real script
sudo cryptsetup luksOpen mypath/filecontainer filecontainer
sudo losetup # Debug for demonstration, not necessary in a real script
sudo mkfs -t ext4 /dev/mapper/filecontainer
sync
sudo cryptsetup luksClose filecontainer
sudo losetup # Debug for demonstration, not necessary in a real script

В отладочном sudo losetupвыводе обратите внимание AUTOCLEAR = 1на filecontainerзапись. Вымогвместо этого сойти с ума loopdev=$(sudo losetup -f); mount -o loop <etc>, но позволить cryptsetupсправиться с этимСПОСОБприятнее.

Главное, чтобы вы СНАЧАЛА убедились, cryptsetup luksOpen containerfile mappednameчто он смонтирован /dev/mapper/mappednameпо умолчанию (вы можете указать ему полный путь, начинающийся с , /и он будет смонтирован туда, как я полагаю), а ПОТОМ отформатируйте /dev/mapper/mappednameцель и убедитесь, что вы НЕ трогаете ее filecontainerнапрямую, в противном случае вы обойдете механизм шифрования и просто создадите незашифрованный файл обратной связи.

решение2

Если вы не управляете устройством петли самостоятельно, cryptsetupавтоматически настроит устройство петли и закроет его, когда оно больше не нужно. Так что между ними нет разницы; cryptsetupвсегда работает на устройстве петли. Смотрите man cryptsetup:

ПРИМЕЧАНИЯ ПО ИСПОЛЬЗОВАНИЮ УСТРОЙСТВА LOOPBACK

Cryptsetup обычно используется непосредственно на блочном устройстве (дисковом разделе или томе LVM). Однако, если аргументом устройства является файл, cryptsetup пытается выделить петлевое устройство и сопоставить его с этим файлом. Для этого режима требуется ядро ​​Linux версии 2.6.25 или более поздней, которое поддерживает флаг автоочистки цикла (петлевое устройство автоматически очищается при последнем закрытии). Конечно, вы всегда можете сопоставить файл с петлевым устройством вручную. См. пример в разделе FAQ по cryptsetup.

Когда отображение устройств активно, вы можете увидеть файл поддержки цикла в выводе команды статуса. Также см. losetup(8).

Связанный контент