Como criar um arquivo criptografado LUKS em um ponto de montagem vboxsf?

1

Estou tentando criar um arquivo criptografado LUKS em uma imagem do VirtualBox. Funciona bem, a menos que o arquivo criptografado resida em uma pasta compartilhada do VirtualBox.

A saída do erro é:

10+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 0.945147 s, 11.1 MB/s

WARNING!
========
This will overwrite data on test.tomb irrevocably.

Are you sure? (Type uppercase yes): YES
Enter passphrase: 
Verify passphrase: 
Enter passphrase for test.tomb: 
mke2fs 1.42.12 (29-Aug-2014)
Creating filesystem with 8192 1k blocks and 2048 inodes

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (1024 blocks): done
Writing superblocks and filesystem accounting information: done

mount: /dev/mapper/tomb is write-protected, mounting read-only
mount: wrong fs type, bad option, bad superblock on /dev/mapper/tomb,
       missing codepage or helper program, or other error

       In some cases useful info is found in syslog - try
       dmesg | tail or so.

É facilmente reproduzível no Vagrant.

Vagrantfile:

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
  config.vm.box = "debian/jessie64"

  config.vm.synced_folder 'tombs', '/tombs'

  config.vm.provision "shell", inline: <<-SHELL
    apt-get update
    apt-get install -y cryptsetup
    mkdir -p /media/tomb
    cat > /test.sh <<-EOF
#!/bin/bash

cd \
dd if=/dev/urandom of=test.tomb bs=1M count=10

cryptsetup -y luksFormat test.tomb
cryptsetup luksOpen test.tomb tomb
mkfs.ext4 -j /dev/mapper/tomb

mount /dev/mapper/tomb /media/tomb
ls /media/tomb

umount /media/tomb
cryptsetup luksClose tomb
EOF

  SHELL
end

Configuração do Vagrant:

mkdir tombs
vagrant plugin install vagrant-vbguest
vagrant up
vagrant ssh

Teste:

sudo su -
bash /test.sh /root  # works fine
bash /test.sh /tombs # does not work

mount | grep tombs mostra:

tombs on /tombs type vboxsf (rw,nodev,relatime)

dmesg mostra:

[  267.574832] EXT4-fs (dm-0): mounted filesystem with ordered data mode. Opts: (null)

Esta é uma restrição conhecida quando o arquivo LUKS está em uma pasta compartilhada? Se não, o que eu poderia estar fazendo errado?

    
por nyi 19.06.2016 / 23:18

1 resposta

1

Eu consegui reproduzir usando as etapas descritas por você. Pastas compartilhadas são uma funcionalidade especial dos módulos adicionais do kernel, e podem não ser funcionalmente equivalentes a uma unidade local.

Eu também tentei criar uma unidade de arquivo LUKS dentro de um dispositivo de loopback (já que é assim que eu fiz as unidades de arquivo LUKS no passado) e ele nem pode formatar o arquivo, ele falha na verificação do post .

Eu também tentei forçar o dono do compartilhamento no Vagrantfile a ser root, não parecia fazer diferença. Também tentei adicionar root e vagrant ao grupo vboxsf , o que também não ajudou.

Portanto, a resposta curta é sim, parece ser uma limitação das pastas compartilhadas do VirtualBox nativo "simples". Uma coisa que eu não tentei foi que o vagrant suporta pastas compartilhadas no estilo nfs, o que exigiria um pouco mais de esforço, mas pode se comportar de maneira diferente.

    
por 20.06.2016 / 16:36