web-dev-qa-db-ja.com

コマンドラインでgzipファイルをパスワードで保護する方法

Ubuntu 10.04でtarコマンドを使用して、tar.gz(および場合によってはtar.bz2)ファイルを作成します。

ファイルをパスワードで保護したい。

これを実行するためのコマンドは何ですか(私はGoogledを使用しましたが、パスワードを使用して圧縮ファイルを作成および抽出する方法を示すものは見つかりませんでした)。

誰もがこれを行う方法を知っていますか?

128
morpheous

あなたはこのタスクにunix-philosophyを適用しなければなりません:各タスクのための1つのツール。

tarringとcompressionはtargzipまたはbzip2の仕事で、cryptoは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-variantは対称暗号化を使用します、あなたは使用された 'パスワード'(別名 'キー')について受信側に知らせる必要があります。 gpg-variantは、対称暗号化と非対称暗号化の組み合わせを使用します。受信者の鍵を使用して(つまり、誰にもパスワードを知らせる必要はありません)、セッション鍵を作成し、その鍵でコンテンツを暗号化します。

あなたがZip(または7z)ルートを行くなら:本質的にそれはopenssl-variantと同じです、あなたはパスワードについて受信側に知らせる必要があります。

154
akira

あなたの意図が単にファイルをパスワードで保護することであるならば、それからコマンドラインを通して手の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*
28
Antony Thomas

これを行うにはいくつかの方法があります。注意すべきことは、別々の圧縮ツールと暗号化ツールを使用する場合は、暗号化されたデータは基本的に圧縮不可能なので、常に暗号化の前に圧縮する必要があるということです。

これらの例は、clear_textというファイルを圧縮して暗号化します。

gpgを使う

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

gpgはデフォルトで暗号化の前に入力ファイルを圧縮します、-cはパスワードで対称暗号化を使うことを意味します。出力ファイルはclear_text.gpgになります。 gpgを使用する利点の1つは、標準の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と呼ばれます。

gzipaespipeを使う

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

aespipeは、標準入力に入力を取り、標準出力に暗号化されたデータを出力するプログラムです。圧縮をサポートしていないので、最初にgzipを介して入力を渡すことができます。出力は標準出力に送られるので、あなたはそれをあなたが選んだ名前のファイルにリダイレクトしなければなりません。おそらくあなたが求めていることを行うための最も効果的な方法ではありませんが、Aespipeは多目的なツールなので、私はそれを言及する価値があると思いました。

20
Graphics Noob

あなたはあなたのパスワードで保護されたアーカイブを作成するために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)を使用して再生することをお勧めします。

14
SaeX

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 -
3
LHolleman