如何在 vboxsf 挂载点中创建 LUKS 加密文件?

如何在 vboxsf 挂载点中创建 LUKS 加密文件?

我正在尝试在 VirtualBox 映像中创建 LUKS 加密文件。除非加密文件驻留在 VirtualBox 共享文件夹中,否则它可以正常工作。

错误输出为:

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.

它可以在 Vagrant 中轻松重现。

流浪文件:

# -*- 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 \$1
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

设置流浪者:

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

测试一下:

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

mount | grep tombs显示:

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

dmesg显示:

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

当 LUKS 文件位于共享文件夹中时,这是一个已知的限制吗?如果不是,我可能做错了什么?

答案1

我能够使用您描述的步骤进行重现。共享文件夹是来宾添加内核模块的特殊功能,在功能上可能不等同于本地驱动器。

我还尝试在环回设备内创建 LUKS 文件驱动器(因为这就是我过去完成 LUKS 文件驱动器的方式),它甚至无法格式化文件,它在后检查时失败。

我还尝试强制 Vagrantfile 中共享的所有者为 root,似乎没有什么区别。还尝试将root和添加vagrantvboxsf组中,但这也没有帮助。

所以简短的答案是肯定的,这似乎是“简单”本机 virtualbox 共享文件夹的限制。我没有尝试的一件事是 vagrant 支持 nfs 风格的共享文件夹,这需要更多的努力,但可能表现不同。

相关内容