Я прочитал много руководств по 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).