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

160585
morpheous

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

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

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

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

114

6 ответов на вопрос

138
akira

Вы должны применить 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-вариант, вы должны сообщить принимающей стороне о пароле.

Для тех, кто интересуется, как расшифровать файл с помощью openssl: `openssl aes-256-cbc -d -in out.tar.gz.enc -out decrypted.tar.gz` ndbroadbent 11 лет назад 23
@ nathan.f77, эта команда также показывает, как делать что-то, не отправляя их в openssl. `openssl enc -aes-256-cbc -e -in foo.tar.gz -out bar.tar.gz.enc` Keith Smiley 10 лет назад 1
@KeithSmiley, если у вас большие архивы и мало места (как это может быть на VPS), это более экономно по сравнению с каналом. Andrew Savinykh 10 лет назад 2
Я не могу запустить это на Mac. Это отличается в любом случае? eleijonmarck 7 лет назад 0
@eleijonmarck предоставить часть "не работает, потому что «... akira 7 лет назад 2
27
Antony Thomas

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

zip -e <file_name>.zip <list_of_files> 

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

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

$ touch file_.txt # creates blank files file_0 & file_1  $ zip -e file.zip file_* # ask zip to encrypt $ ENTER PASSWORD: $ VERIFY PASSWORD: $ ls file* 
Шифрование Zip-файлов никоим образом не безопасно. Kristopher Ives 10 лет назад 10
@KristopherIves вы можете рассказать о небезопасности? tscizzle 8 лет назад 3
@tscizzle https://www.unix-ag.uni-kl.de/~conrad/krypto/pkcrack/pkcrack-readme.html Kristopher Ives 8 лет назад 0
@KristopherIves Для работы требуется «другой ZIP-архив, содержащий хотя бы один из файлов из зашифрованного архива в * незашифрованном * виде». Franklin Yu 7 лет назад 2
«Вам нужно знать только часть открытого текста (не менее 13 байтов)». Это делает его намного более уязвимым, чем если бы требовался целый незашифрованный файл (что уже довольно плохо). Кроме того, zip-шифрование не устойчиво к атакам методом перебора (например, с помощью Jack the Ripper). Никто не должен использовать это для чего-то серьезного. EM0 7 лет назад 2
15
Graphics Noob

Here's a few ways to do this. One thing to note is that if you're going to use separate compression and encryption tools you should always compress before encryption, since encrypted data is essentially non-compressible.

These examples compress and encrypt a file called clear_text.

Using gpg

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

gpg will compress the input file before encryption by default, -c means to use symmetric encryption with a password. The output file will be clear_text.gpg. One benefit of using gpg is that is uses standard OpenPGP formats, so any encryption software that supports OpenPGP will be able to decrypt it.

Using mcrypt

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

The -z option compresses. By default this outputs a file called clear_text.gz.nc.

Using bcrypt

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

bcrypt compresses before encrypting by default, the -r option is so that the input file isn't deleted in the process. The output file is called clear_text.bfe by default.

Using gzip and 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 is what it sounds like, a program that takes input on stdin and outputs aes encrypted data on stdout. It doesn't support compression, so you can pipe the input through gzip first. Since the output goes to stdout you'll have to redirect it to a file with a name of your own choosing. Probably not the most effective way to do what you're asking but aespipe is a versatile tool so I thought it was worth mentioning.

10
SaeX

You can use 7zip to create your password protected archive. You can specify the password on the command line (or in a script) the following way:

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

7zip can also read from STDIN as follows:

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

If it's mandatory to use zip files, you might want to play around with the -t<type> parameter (e.g. -tzip).

I picked this as the answer because it's the only one that answers the question. The question isn't how to encrypt a message, it's how to password protect an archive. That's all I needed to do. (Gmail was blocking my server backups because it decided there was something unsafe in the attachment, and I just needed to add a password. It doesn't have to be secure.) felwithe 8 лет назад 3
7
Ignacio Vazquez-Abrams

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

Ах, это объясняет, почему я не смог ничего найти в Интернете. Я думаю, я пойду на молнии. morpheous 14 лет назад 0
Gah !, я пытаюсь рекурсивно заархивировать каталог с passwors, и он только создает zip-файл с именем foobar в качестве (пустого) каталога в нем. Вот команда, которую я использую: zip -e foobar.zip foobar. foobar - непустая папка в текущем каталоге morpheous 14 лет назад 0
Также как человек говорит, `-р`. Ignacio Vazquez-Abrams 14 лет назад 4
3
LHolleman

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

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

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

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

gpg -d passwordprotectedarchive.tar.gz.gpg | tar xzvf -