我可以ext4
在Ubuntu 15.04上使用内核4.1 创建一个新的加密分区吗?
我可以ext4
在Ubuntu 15.04上使用内核4.1 创建一个新的加密分区吗?
Answers:
首先免责声明:我尚未在Ubuntu上完成此操作,而是在使用启用了自定义Linux 4.2.3内核的Debian“ Stretch”安装的计算机EXT4_FS_ENCRYPTION
上。
kmeaw给出的说明对我不完全适用。遗漏了一些内容(命令行参数和步骤)。
e2fsprogs
如上所示更新生成随机盐。我使用以下内容将其存储在“安全的地方”:
head -c 16 /dev/urandom | xxd -p >~/tmp-salt.txt
echo 0x`cat ~/tmp-salt.txt` >~/.cryptoSalt
为了在文件系统上使用ext4加密,必须在超级块中设置“ encrypt”标志。创建ext4文件系统时,这不是默认设置。使用e2fsprogs 1.43或更高版本中的“ tune2fs”实用程序,设置“ encrypt”选项:
sudo tune2fs -O encrypt /dev/sda4
挂载或重新挂载文件系统,以便内核知道更改(也许是自动的,但是我仅在单独的分区上完成了此操作,所以我不确定。)
在已启用加密的挂载文件系统上创建目录:
sudo mkdir -p /secret/home/$USER
sudo chown $USER:$USER /secret/home/$USER
在密钥环中创建密钥,并使用它为要加密的目录设置策略(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.
每次重新引导后,add_key
可以使用该命令设置用于解密目录及其后代的密钥:
$ /usr/sbin/e4crypt add_key -S s:`cat ~/.cryptoSalt`
Enter passphrase (echo disabled):
Added key with descriptor [0132fed69f946c86]
输入在上一步中使用的相同密码,您不必记住描述符的十六进制字符串。
您也可以add_key
直接使用。这将使用特定于文件系统的盐(因此该分区下的所有文件夹将具有相同的盐)
$ /usr/sbin/e4crypt add_key /secret/home/$USER
Added key with descriptor [0132fed69f946c86]
Key with descriptor [0132fed69f946c86] applies to /secret/home/theuser.
cp .. /secret/home/$USER/.
:«cp:无法创建常规文件'/secret/home/alexis/test-top-secret-image.svg':不是必需的密钥可用»。我只是听从您的指示,所以我想有些变化。
/usr/bin/e4crypt
” 的第二个实例缺少“ / [s] bin”中的“ s”。
Linux 4.1附带了一个新的Ext4功能,用于加密文件系统的目录。加密密钥存储在密钥环中。首先,请确保已启用CONFIG_KEYS
和CONFIG_EXT4_FS_ENCRYPTION
内核选项,并且您具有4.1或更高版本的内核。
首先,您需要将e2fsprogs更新到至少1.43版本,在撰写本文时仍为WIP,因此我们需要从git存储库中获取它:
$ git clone git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git
e4crypt源已禁用其源代码中的相关部分,可通过编辑misc / e4crypt.c并删除第714行附近的这两行来启用它:
printf("arg %s\n", argv[optind]);
exit(0);
现在构建并安装新的e2fsprogs:
$ sudo apt-get install devscripts build-essential gettext texinfo pkg-config debhelper m4
$ debuild
$ sudo dpkg -i e2fsprogs_1.43-WIP_amd64.deb
现在检查您的版本,它应该是1.43-WIP:
# e2fsck -V
e2fsck 1.43-WIP (18-May-2015)
Using EXT2FS Library version 1.43-WIP, 18-May-2015
要使用密钥,我们需要安装keyutils
软件包:
$ sudo apt-get install keyutils
让我们创建一个要加密的目录。只能在空目录上设置加密策略:
$ sudo mkdir -p /encrypted/dir
首先生成一个随机的盐值并将其存储在安全的地方:
$ head -c 16 /dev/random | xxd -p
877282f53bd0adbbef92142fc4cac459
现在,生成新密钥并将其添加到您的密钥环中:每次刷新钥匙串(重新引导)时都应重复此步骤
$ sudo e4crypt -S 0x877282f53bd0adbbef92142fc4cac459
Enter passphrase (echo disabled):
Added key with descriptor [f88747555a6115f5]
现在,您知道密钥的描述符了。确保已将钥匙添加到钥匙串中:
$ keyctl show
Session Keyring
1021618178 --alswrv 1000 1000 keyring: _ses
176349519 --alsw-v 1000 1000 \_ logon: ext4:f88747555a6115f5
快完成了 现在为目录设置加密策略:
$ e4crypt set_policy f88747555a6115f5 /encrypted/dir
就这样。如果您尝试访问磁盘时未在钥匙串中添加密钥,则文件名及其内容将被视为已加密的乱码。小心在文件系统上运行旧版本的e2fsck-它将加密的文件名视为无效。