cryptsetup: Falha ao anexar dispositivo de loopback

1

Estou usando cryptsetup com cabeçalho desanexado. Para isso, estou usando o parâmetro --header para especificar o arquivo de cabeçalho. Posso abrir meu dispositivo usando:

cryptsetup luksOpen /dev/sdb1 sdb1 --header LUKS-HEADER

Mas eu preciso fornecer o cabeçalho não como um arquivo, mas como saída de outro comando (estou usando o comando cat para ilustração aqui)

cryptsetup luksOpen /dev/sdb1 sdb1 --header <(cat LUKS-HEADER)

mas isso não funciona. Eu recebo o seguinte erro:

Attaching loopback device failed (loop device with autoclear flag is required).

Isso é confuso, porque a abordagem semelhante funciona para fornecer chaves, ou seja,

cryptsetup luksOpen /dev/sdb1 sdb1 --header LUKS-HEADER --key-file <(printf asdf)

o comando acima funciona bem (estou usando "asdf" como senha de exemplo).

Como posso fornecer o argumento para a opção --header de um pipe / outro processo?

    
por Martin Vegter 29.12.2015 / 14:23

2 respostas

2

Parece que o cryptsetup requer que o cabeçalho LUKS seja um arquivo ou dispositivo regular. Se você precisar fornecer o cabeçalho LUKS como uma saída de um processo / fluxo, poderá contornar a restrição enviando-a para /dev/ram

cat LUKS-HEADER > /dev/ram0

(desde que o seu kernel suporte ramdisk)

Então você pode simplesmente usar o seu comando cryptsetup como:

cryptsetup luksOpen /dev/sdb1 sdb1 --header /dev/ram0

Tenha em mente que o cabeçalho LUKS permanecerá em /dev/ram0 disk até que você libere o espaço. Para liberar a memória, você pode usar o comando blockdev :

blockdev -v --flushbufs /dev/ram0
    
por 10.02.2016 / 10:32
0

Acho que o que você está fazendo em <(cat HEADER) não está realmente fazendo o que você acha que é. Aqui estão as razões pelas quais eu acredito nisso:

luksOpen <device> <name> (old syntax)

Opens the LUKS device device and sets up a mapping name after successful verification of the supplied passphrase. If the passphrase is not supplied via --key-file, the command prompts for it interactively.

NOTES ON LOOPBACK DEVICE USE

Cryptsetup is usually used directly on a block device (disk partition or LVM volume). However, if the device argument is a file, cryptsetup tries to allocate a loopback device and map it into this file. This mode requires Linux kernel 2.6.25 or more recent which supports the loop auto-clear flag (loop device is cleared on last close automatically). Of course, you can always map a file to a loop-device manually.

De alguma forma, parece que você está gerando mais argumentos do que pretende fazer, ou então menos, porque, como parece, cryptsetup está de alguma forma associando seu argumento de dispositivo como um < em> arquivo e não como um dispositivo de bloco, e por isso está tentando montá-lo via loopback.

    
por 29.12.2015 / 16:35