Як захистити паролем файли gzip у командному рядку?


130

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

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

Яка команда зробити це (я Googled, але не знайшов нічого, що показує, як створити та витягти стислі файли за допомогою пароля).

Хтось знає, як це зробити?

Відповіді:


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-варіант використовує комбінацію симетричного та асиметричного шифрування, ви використовуєте ключ приймаючої сторони (це означає, що вам не потрібно нікому вказувати пароль, щоб створити ключ сеансу та зашифрувати вміст цим ключем.

якщо ви йдете поштовим (або 7z) маршрутом: по суті такий же, як і Opensl-варіант, ви повинні повідомити приймаючу сторону про пароль.


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

Якщо ваш намір полягає в тому, щоб просто захистити файли паролем, то скористайтеся утилітою 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 не стійке до жорстоких атак (наприклад, з Джеком Розпушувачем). Ніхто не повинен використовувати його для чогось серйозного.
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 та виводить aes зашифровані дані на stdout. Він не підтримує стиснення, тому ви можете спочатку подати вхід через gzip. Оскільки вихід виходить на stdout, вам доведеться перенаправити його на файл з назвою на власний вибір. Напевно, не найефективніший спосіб робити те, що ви просите, але еспіра є універсальним інструментом, тому я вважав, що це варто згадати.


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 блокував резервні копії мого сервера, оскільки вирішив, що в додатку є щось небезпечне, і мені просто потрібно було додати пароль. Це не повинно бути захищеним.)
Felwit

7

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


Так, це пояснює, чому я нічого не зміг знайти в Інтернеті. Я думаю, я піду на блискавку.
мертвий

Gah !, я намагаюся рекурсивно стискати каталог з паспортами, і він створює лише zip-файл із ім'ям foobar як (порожній) каталог у ньому. Ось команда, яку я використовую: zip -e foobar.zip foobar. foobar - це не порожня папка в поточному каталозі
морфний

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.