Я использую шифрование ext4. https://wiki.archlinux.org/index.php/Ext4#Использование_шифрования_на_файловой_основе
Прежде чем расшифровать каталог, я вижу в нем множество зашифрованных имен файлов.
Я хотел бы скопировать зашифрованные файлы, чтобы расшифровать их на другом компьютере.
Я мог бы сделать это с помощью ecryptfs. Как мне сделать это с шифрованием ext4.
решение1
Вы можете видеть зашифрованные и дополненные имена файлов, но вы не сможете прочитать содержимое файлов. Поэтому попытка скопировать файлы без шифрования приведет к таким ошибкам:
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
или debugfs
.
debugfs
в частности, похоже, что он лишен функций, связанных с политикой/шифрованием, за исключением того, ls -r
что показывает зашифрованные имена файлов во всей их красе, что \x1e\x5c\x8d\xe2\xb7\xb5\xa0N\xee\xfa\xde\xa66\x8axY
означает, что представление ASCII, которое обычно ls
показывает, каким-то образом закодировано для печати.
Фактическое имя файла [дополняется и фактически хранится в файловой системе как] 16 случайных байтов, но regular ls
показывает его как 22 символа ASCII. Копирование такого файла традиционным способом создало бы файл, сохраненный в виде его представления в виде символов ASCII, когда вам на самом деле нужно сохранить его в виде случайных байтов. Так что это просто обречено на провал на стольких уровнях.
вкратцеесли и есть способ это сделать, то я о нем не знаю :-}