如何使用新的 4.1 内核在 Ubuntu 15.04 上创建 ext4 加密分区?

Oto*_*han 11 encryption ext4 15.04

我可以ext4在 Ubuntu 15.04 上使用内核 4.1创建一个新的加密分区吗?

Dan*_*ser 11

首先免责声明:我没有在 Ubuntu 上做过这件事,而是在一台安装了 Debian“Stretch”的机器上,使用我启用的自定义 Linux 4.2.3 内核EXT4_FS_ENCRYPTION

kmeaw给出的说明对我来说并不完全像发布的那样。遗漏了一些内容(命令行参数和步骤)。

  • 更新e2fsprogs如上图
  • 生成您的随机盐。我使用以下内容将其存储在“安全的地方”:

    head -c 16 /dev/urandom | xxd -p >~/tmp-salt.txt
    echo 0x`cat ~/tmp-salt.txt` >~/.cryptoSalt
    
    Run Code Online (Sandbox Code Playgroud)
  • 为了在文件系统上使用 ext4 加密,必须在超级块中设置“加密”标志。这不是创建 ext4 文件系统时的默认设置。使用 e2fsprogs 1.43 或更高版本中的“tune2fs”实用程序,设置“encrypt”选项:

    sudo tune2fs -O encrypt /dev/sda4
    
    Run Code Online (Sandbox Code Playgroud)
  • 挂载或重新挂载文件系统,以便内核知道更改(可能是自动的,但我只在单独的分区上完成了此操作,所以我不确定。)

  • 在启用加密的挂载文件系统上创建一个目录:

    sudo mkdir -p /secret/home/$USER
    sudo chown $USER:$USER /secret/home/$USER
    
    Run Code Online (Sandbox Code Playgroud)
  • 在密钥环中创建密钥,并用它来设置要加密的目录的策略(sudo此处不需要该命令):

    $ /usr/sbin/e4crypt add_key -S s:`cat ~/.cryptoSalt`
    Enter passphrase (echo disabled):
    Added key with descriptor [0132fed69f946c86]
    $ /usr/bin/e4crypt set_policy 0132fed69f946c86 /secret/home/$USER
    Key with descriptor [0132fed69f946c86] applies to /secret/home/theuser.
    
    Run Code Online (Sandbox Code Playgroud)
  • 每次重新启动后,add_key可以使用该命令设置解密目录及其后代的密钥:

    $ /usr/sbin/e4crypt add_key -S s:`cat ~/.cryptoSalt`
    Enter passphrase (echo disabled):
    Added key with descriptor [0132fed69f946c86]
    
    Run Code Online (Sandbox Code Playgroud)

    输入与上一步中使用的相同的密码,您不必记住描述符十六进制字符串。

  • 也可以add_key直接使用。这将使用文件系统特定的盐(因此该分区下的所有文件夹都将具有相同的盐)

    $ /usr/sbin/e4crypt add_key /secret/home/$USER
    Added key with descriptor [0132fed69f946c86]
    Key with descriptor [0132fed69f946c86] applies to /secret/home/theuser.
    
    Run Code Online (Sandbox Code Playgroud)