我正在使用ext4加密。https://wiki.archlinux.org/index.php/Ext4#Using_file-based_encryption
在解密目录之前,我可以在其中看到许多加密的文件名。
我想复制加密的文件,以便可以在其他计算机上对其进行解密。
我可以用ecryptfs做到这一点。我该如何使用ext4加密。
您可以看到加密和填充的文件名,但是您应该无法读取文件内容。因此,尝试复制未加密的文件将导致以下错误:
cp: cannot open 'vault/YgI8PdDi8wY33ksRNQJSvB' for reading: Required key not available
因此,您几乎不应该这样做。实际的答案是将其解密,然后复制。如果您选择一个加密位置作为目标目录,则副本将被重新加密。通过rsync / ssh在网络上传输也将被加密。因此,大多数事情都可以正常工作,仅将其存储在云中是不可能的。文件系统特定的加密在文件系统之外不起作用。
绕过读取障碍还不够:与所有元数据都是常规文件的ecryptfs不同,ext4加密涉及隐藏在文件系统本身中的元数据,这些元数据对您来说是不可见的,因此您无法轻松地对其进行复制。
我找到的最接近的是e4crypt get_policy
,e4crypt set_policy
它使您可以使用现有密钥加密目录,而无需知道明文形式的实际密钥。但这仅适用于空目录,不适用于文件。
您也可以加密文件库目录,用文件填充文件,然后将这些文件硬链接到根目录,然后删除文件库目录。您最终会在根目录(您不应该对其进行加密)中得到加密的文件(内容)。文件系统只知道文件已加密。(不建议实际执行此操作。)
如果您仍然必须进行复制,我想您可以使用回旋方式:
否则,我猜您需要一个专门的工具,该工具知道如何将加密的目录+元数据从一个ext4文件系统复制到另一个文件系统,但是我看不到使用e4crypt
或这样做的方法debugfs
。
debugfs
特别是似乎没有策略/加密相关的功能,只是ls -r
它以完整的形式显示加密的文件名,\x1e\x5c\x8d\xe2\xb7\xb5\xa0N\xee\xfa\xde\xa66\x8axY
这意味着常规ls
显示的ASCII表示以某种方式编码为可打印。
实际的文件名[以16个随机字节填充并实际存储在文件系统中],但是常规文件名ls
显示为22个ASCII字符。当您确实需要将其存储为随机字节时,以传统方式复制此类文件会创建一个以ASCII字符表示形式存储的文件。因此,这注定要失败很多层。
tl;博士,如果有办法做到这一点,那我就不知道了:-}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句