Как защитить паролем файлы gzip в командной строке?
Я хочу создать некоторые файлы tar.gz (и, возможно, tar.bz2), используя команду tar в Ubuntu 10.04.
Я хочу защитить файл паролем.
Какова команда, чтобы сделать это (я гуглил, но не нашел ничего, что показывает, как создавать и извлекать сжатые файлы, используя пароль).
Кто-нибудь знает, как это сделать?
6 ответов
Вы должны применить Unix-философию для этой задачи: один инструмент для каждой задачи.
tarring и сжатие - это работа для 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-вариант, вы должны сообщить принимающей стороне о пароле.
Если вы хотите просто защитить файлы паролем, используйте утилиту 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*
Вот несколько способов сделать это. Следует отметить, что если вы собираетесь использовать отдельные инструменты сжатия и шифрования, вы всегда должны сжимать их перед шифрованием, поскольку зашифрованные данные практически не сжимаются.
Эти примеры сжимают и шифруют файл с именем 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 - это универсальный инструмент, поэтому я подумал, что стоит упомянуть.
Вы можете использовать 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
).
Ни tar, ни gzip, ни bzip2 не поддерживают защиту паролем. Либо используйте такой формат сжатия, как zip, либо зашифруйте его с помощью другого инструмента, такого как GnuPG.
Создать с помощью:
tar czvf - directory | gpg --symmetric --cipher-algo aes256 -o passwordprotectedarchive.tar.gz.gpg
Он попросит вас ввести пароль.
Расшифровать с помощью:
gpg -d passwordprotectedarchive.tar.gz.gpg | tar xzvf -
С участием zip
и unzip
Помня о проблемах безопасности защищенных паролем zip-файлов, вот как зашифровать каталог и файл с помощью zip
:
zip -r --encrypt archive.zip a_directory a_file
Вам будет предложено ввести пароль.
Чтобы расшифровать файлы, вы можете использовать unzip
:
unzip archive.zip
или же bsdtar
:
bsdtar -xf archive.zip