複製 ext4 加密文件
我正在使用 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
它允許您使用現有密鑰加密目錄,而無需知道明文中的實際密鑰。但它僅適用於空目錄,不適用於文件。您還可以加密保管庫目錄,用文件填充它,然後將這些文件硬連結到根目錄,然後刪除保管庫目錄。您最終會在根目錄中獲得加密文件(內容)(您不應該對其進行加密)。文件系統只知道文件已加密。(不建議實際這樣做。)
如果您無論如何都必須製作副本,我想您可以通過迂迴的方式進行:
- 製作整個文件系統的原始 dd 副本
- 更改文件系統 UUID
- 刪除你不想要的文件
否則我猜你需要一個專門的工具來知道如何將加密目錄+元數據從一個 ext4 文件系統複製到另一個文件系統,但我沒有看到使用
e4crypt
or的方法debugfs
。
debugfs
特別是似乎沒有策略/加密相關功能,除了ls -r
顯示加密文件名的全部榮耀,因為\x1e\x5c\x8d\xe2\xb7\xb5\xa0N\xee\xfa\xde\xa66\x8axY
這意味著 ASCII 表示正常ls
節目以某種方式編碼為可列印。實際文件名是
$$ padded to and actually stored in the filesystem as $$16 個隨機字節,但正常
ls
顯示為 22 個 ASCII 字元。當您確實需要將其儲存為隨機字節時,以傳統方式複制此類文件將創建一個儲存為其 ASCII 字元表示的文件。所以這注定會在這麼多層次上失敗。tl;博士如果有辦法做到這一點,那麼我不知道:-}