如何在文件内创建加密文件系统?

如何在文件内创建加密文件系统?

我发现flossstuff 博客上的这个有趣的教程

它解释了如何创建一个空文件,将其格式化为 ext4,并将其作为设备安装。

我想知道它是否可以创建为加密的 ext4 文件系统。

我尝试使用 palimpsest(系统菜单中的磁盘实用程序)来格式化已创建的文件系统,但它不起作用,因为它检测到正在使用的文件系统。

如果我尝试卸载文件系统,那也行不通,因为它无法检测到设备(因为它不是像硬盘或 USB 驱动器这样的真实设备)。

所以我的问题是,是否有一个选项可以从一开始就将文件系统创建为加密的?我使用了以下命令:

创建一个200Mb大小的空文件:

dd if=/dev/zero of=/path/to/file bs=1M count=200

将其设为 ext4:

mkfs -t ext4 file

将其安装到我家里面的一个文件夹中:

sudo mount -o loop file /path/to/mount_point

该命令有没有什么方法mkfs可以创建一个加密的 ext4 文件系统并要求输入解密密码?

我计划使用此方法来加密 Dropbox 内部的文件。

答案1

按照以下步骤创建包含文件系统的加密文件:

1.创建给定大小的文件的更快方法是:

fallocate -l 128M /path/to/file

2.创造卢克斯(Linux 统一密钥设置)文件内的分区使用dm-隐窝工具:

cryptsetup -y luksFormat /path/to/file

您可以检查文件是否是加密容器:

/path/to/file: LUKS encrypted file, ver 1 [aes, xts-plain64, sha1] UUID: 7e2af5a1-3fab-43ea-a073-3b9cc6073f00

3.打开加密容器:

cryptsetup luksOpen /path/to/file data

data是设备映射器卷名。您可以选择其他名称。

这将打开 LUKS 设备,并将其映射到我们提供的名称,在我们的例子中,在 创建一个文件/dev/mapper/data

4.ext4在此设备上创建文件系统:

mkfs.ext4 /dev/mapper/data

5.然后创建挂载点:

mkdir /path/to/mount

6.并在那里安装设备:

mount /dev/mapper/data /path/to/mount

7.要卸载文件系统并关闭 LUKS 设备:

umount /path/to/mount
cryptsetup luksClose data

现在您已拥有加密的 LUKS 容器,其中有 ext4 文件系统。当您想要使用它时,只需重复步骤 3 和 6。完成后,调用步骤 7。

本文对我很有帮助。

有一天你的容器会用完空间。假设加密容器文件大小为 128 MB,我们想将其大小增加到 512 MB。增加其容量按着这些次序:

1.卸载并关闭 LUKS 设备(参见上面列表中的步骤 7)。

2.增加容器文件大小:

 dd if=/dev/zero of=/path/to/file bs=384M count=1 oflag=append conv=notrunc

3.打开 LUKS 设备。

cryptsetup luksOpen /path/to/file data

4.调整 LUKS 设备大小以匹配容器文件大小。来自手册页:

如果未指定 --size(以扇区为单位),则使用底层块设备的大小。

因此您可以:

cryptsetup resize data

5.然后调整 ext4 文件系统的大小:

e2fsck -f /dev/mapper/data
resize2fs /dev/mapper/data

6.现在您可以重新挂载文件系统:

mount /dev/mapper/data /path/to/mount

答案2

您可以使用cryptmount它来加密文件系统,即使文件系统位于文件上。

手册页cryptmount有一个非常简单和详细的解释,我在这里报告(修改),它明确提到了基于文件的文件系统。

  • 步骤1
    在 中添加条目/etc/cryptmount/cmtab,内容如下:

    mycrypt {
        dev=/media/data/mycrypt dir=/home/enzotib/mycrypt
        fstype=ext4 mountoptions=defaults cipher=twofish
        keyfile=/etc/cryptmount/mycrypt.key
        keyformat=builtin
    }
    

    其中/media/data/mycrypt,支持文件是由 创建 的dd,而/home/enzotib/mycrypt是所需的挂载点。

  • 第 2 步
    生成秘密解密密钥

    sudo cryptmount --generate-key 32 mycrypt
    
  • 步骤3
    执行以下命令

    sudo cryptmount --prepare mycrypt
    

    然后系统会要求你输入设置密钥时使用的密码

  • 步骤 4
    创建文件系统

    sudo mkfs.ext4 /dev/mapper/mycrypt
    
  • 步骤 5
    执行

    sudo cryptmount --release mycrypt
    
  • 步骤 6
    现在挂载文件系统

    mkdir /home/enzotib/mycrypt
    cryptmount -m mycrypt
    

    然后卸载它

    cryptmount -u mycrypt
    

此外,如果您需要加密目录,encfs可能值得考虑。

答案3

您可以使用 losetup 命令-e参数来创建加密循环设备。详细信息请参阅http://tldp.org/HOWTO/Cryptoloop-HOWTO/loopdevice-setup.html

相关内容