Как защитить паролем файлы gzip в командной строке?


130

Я хочу создать некоторые файлы tar.gz (и, возможно, tar.bz2), используя команду tar в Ubuntu 10.04.

Я хочу защитить файл паролем.

Какова команда, чтобы сделать это (я гуглил, но не нашел ничего, что показывает, как создавать и извлекать сжатые файлы, используя пароль).

Кто-нибудь знает, как это сделать?

Ответы:


159

Вы должны применить Unix-философию для этой задачи: один инструмент для каждой задачи.

и сжатие образования конденсата работы для tarи gzipили bzip2, крипто работы для любого gpgили openssl:

шифровать

 % tar cz folder_to_encrypt | \
      openssl enc -aes-256-cbc -e > out.tar.gz.enc

расшифровывать

 % openssl enc -aes-256-cbc -d -in out.tar.gz.enc | tar xz

Или используя gpg

 % gpg --encrypt out.tar.gz

вариант openssl использует симметричное шифрование, вам нужно будет сообщить получающей стороне об использованном «пароле» (он же «ключ»). gpg-вариант использует комбинацию симметричного и асимметричного шифрования, вы используете ключ принимающей стороны (что означает, что вам не нужно сообщать никому какой-либо пароль), чтобы создать ключ сеанса и зашифровать содержимое с этим ключом.

если вы идете по zip (или 7z) маршруту: по сути, это то же самое, что и openssl-вариант, вы должны сообщить принимающей стороне о пароле.


26
Для всех, кто интересуется, как расшифровать файл с помощью openssl:openssl aes-256-cbc -d -in out.tar.gz.enc -out decrypted.tar.gz
ndbroadbent

1
@ nathan.f77, эта команда также показывает, как что-то делать, не отправляя их в openssl. openssl enc -aes-256-cbc -e -in foo.tar.gz -out bar.tar.gz.enc
Кит Смайли

3
@KeithSmiley, если у вас есть большие архивы и мало места (как это может быть на VPS), это более экономичное пространство для передачи.
Андрей Савиных,

Я не могу запустить это на Mac. Это отличается в любом случае?
eleijonmarck

3
@eleijonmarck предоставляет часть «не работает, потому что <insert-error-message-here>»…
akira

29

Если вы хотите просто защитить файлы паролем, используйте утилиту hand zip через командную строку

zip -e <file_name>.zip <list_of_files>

-e просит утилиту zip зашифровать файлы, указанные в

Рабочий пример:

$ touch file_{0,1}.txt # creates blank files file_0 & file_1    
$ zip -e file.zip file_* # ask zip to encrypt
$ ENTER PASSWORD:
$ VERIFY PASSWORD:
$ ls file*

11
Шифрование Zip-файлов никоим образом не безопасно.
Кристофер Айвз

4
@KristopherIves вы можете рассказать о небезопасности?
tscizzle


4
@KristopherIves Для работы требуется «еще один ZIP-архив, содержащий как минимум один из файлов из зашифрованного архива в незашифрованном виде».
Франклин Ю.

4
«Вам нужно знать только часть открытого текста (не менее 13 байтов)». Это делает его намного более уязвимым, чем если бы требовался целый незашифрованный файл (что уже довольно плохо). Кроме того, zip-шифрование не устойчиво к атакам методом перебора (например, с помощью Jack the Ripper). Никто не должен использовать это для чего-то серьезного.
EM0

21

Вот несколько способов сделать это. Следует отметить, что если вы собираетесь использовать отдельные инструменты сжатия и шифрования, вы всегда должны сжимать их перед шифрованием, поскольку зашифрованные данные практически не сжимаются.

Эти примеры сжимают и шифруют файл с именем clear_text.

С помощью gpg

$ gpg -c clear_text #Compress & Encrypt
$ gpg -d clear_text.gpg #Decrypt & Decompress

По умолчанию gpg сжимает входной файл перед шифрованием, что -cозначает использование симметричного шифрования с паролем. Выходной файл будет clear_text.gpg. Одним из преимуществ использования gpgявляется то, что он использует стандартные форматы OpenPGP, поэтому любое программное обеспечение для шифрования, которое поддерживает OpenPGP, сможет расшифровать его.

С помощью mcrypt

$ mcrypt -z clear_text #Compress & Encrypt
$ mdecrypt -z clear_text.gz.nc #Decrypt & Decompress

-zВариант компрессы. По умолчанию это выводит файл с именем clear_text.gz.nc.

С помощью bcrypt

$ bcrypt -r clear_text #Compress & Encrypt
$ bcrypt -r clear_text.bfe #Decrypt & Decompress

bcrypt сжимает перед шифрованием по умолчанию, -rопция заключается в том, что входной файл не удаляется в процессе. Выходной файл вызывается clear_text.bfeпо умолчанию.

Использование gzipиaespipe

$ cat clear_text | gzip | aespipe > clear_text.gz.aes #Compress & Encrypt
$ cat clear_text.gz.aes | aespipe -d | gunzip > clear_text #Decrypt & Decompress

aespipe - это то, на что это похоже, программа, которая принимает данные на stdin и выводит зашифрованные данные на stdout. Он не поддерживает сжатие, поэтому вы можете сначала направить ввод через gzip. Поскольку вывод идет в стандартный вывод, вам придется перенаправить его в файл с именем по вашему выбору. Вероятно, не самый эффективный способ сделать то, что вы просите, но aespipe - это универсальный инструмент, поэтому я подумал, что стоит упомянуть.


15

Вы можете использовать 7zip для создания архива, защищенного паролем. Вы можете указать пароль в командной строке (или в скрипте) следующим образом:

7z a -p<password> <someprotectedfile>.7z file1.txt file2.txt

7zip также может читать из STDIN следующим образом:

cat <somefile> | 7z a -si -p<password> <someprotectedfile>.7z

Если необходимо использовать zip-файлы, вы можете поиграть с -t<type>параметром (например -tzip).


5
Я выбрал это как ответ, потому что это единственный ответ на вопрос. Вопрос не в том, как зашифровать сообщение, а в том, как защитить архив паролем. Это все, что мне нужно было сделать. (Gmail блокировал резервные копии моего сервера, потому что он решил, что во вложении было что-то небезопасное, и мне просто нужно было добавить пароль. Он не должен быть безопасным.)
felwithe

7

Ни tar, ни gzip, ни bzip2 не поддерживают защиту паролем. Либо используйте такой формат сжатия, как zip, либо зашифруйте его с помощью другого инструмента, такого как GnuPG.


Ах, это объясняет, почему я не смог ничего найти в Интернете. Я думаю, я пойду на молнии.
morfheous

Gah !, я пытаюсь рекурсивно заархивировать каталог с паролями, и он создает только zip-файл с именем foobar в качестве (пустого) каталога в нем. Вот команда, которую я использую: zip -e foobar.zip foobar. foobar - это непустая папка в текущем каталоге
morpheous

4
Также как человек говорит -r.
Игнасио Васкес-Абрамс

5

Создать с помощью:

tar czvf - directory | gpg --symmetric --cipher-algo aes256 -o passwordprotectedarchive.tar.gz.gpg

Он попросит вас ввести пароль.

Расшифровать с помощью:

gpg -d passwordprotectedarchive.tar.gz.gpg | tar xzvf -
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.