Como proteger por senha os arquivos gzip na linha de comando?

113

Eu quero criar alguns arquivos tar.gz (e possivelmente tar.bz2), usando o comando tar no Ubuntu 10.04.

Eu quero proteger o arquivo com senha.

Qual é o comando para fazer isso (eu pesquisei no Google, mas não encontrei nada que mostre como criar e extrair arquivos compactados usando uma senha).

Alguém sabe como fazer isso?

    
por morpheous 12.07.2010 / 14:50

6 respostas

137

você tem que aplicar a filosofia unix a esta tarefa: uma ferramenta para cada tarefa.

tarring e compactação é um trabalho para tar e gzip ou bzip2 , a criptografia é uma tarefa para gpg ou openssl :

Criptografar

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

Descriptografar

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

Ou usando o gpg

 % gpg --encrypt out.tar.gz

o openssl-variant usa criptografia simétrica, você teria que informar a parte receptora sobre a 'senha' usada (também conhecida como 'a chave'). o gpg-variante usa uma combinação de criptografia simétrica e assimétrica, você usa a chave da parte receptora (o que significa que você não precisa informar nenhuma senha a ninguém) para criar uma chave de sessão e criptografar o conteúdo com essa chave.

se você for a rota zip (ou 7z): essencialmente, o mesmo que o openssl-variant, você deve informar a parte receptora sobre a senha.

    
por 12.07.2010 / 15:05
27

Se sua intenção é apenas proteger os arquivos com senha, use o utilitário zip da mão por meio da linha de comando

zip -e <file_name>.zip <list_of_files>

-e pede ao utilitário zip para criptografar os arquivos mencionados em

Exemplo de trabalho:

$ 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*
    
por 17.06.2012 / 22:12
15

Veja algumas maneiras de fazer isso. Uma coisa a notar é que, se você for usar ferramentas de criptografia e compactação separadas, você deve sempre compactar antes da criptografia, já que os dados criptografados são basicamente não compressíveis.

Estes exemplos comprimir e criptografar um arquivo chamado clear_text .

Usando gpg

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

gpg comprimirá o arquivo de entrada antes da criptografia por padrão, -c significa usar criptografia simétrica com uma senha. O arquivo de saída será clear_text.gpg . Um benefício do uso de gpg é o uso de formatos OpenPGP padrão, portanto, qualquer software de criptografia que suporte o OpenPGP poderá descriptografá-lo.

Usando mcrypt

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

A opção -z é compactada. Por padrão, isso gera um arquivo chamado clear_text.gz.nc .

Usando bcrypt

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

O bcrypt é compactado antes de ser criptografado por padrão, a opção -r é para que o arquivo de entrada não seja excluído no processo. O arquivo de saída é chamado clear_text.bfe por padrão.

Usando gzip e 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 é o que parece, um programa que recebe informações sobre stdin e gera dados criptografados em stdout. Ele não suporta compressão, então você pode canalizar a entrada através do gzip primeiro. Como a saída vai para o stdout, você terá que redirecioná-lo para um arquivo com um nome de sua escolha. Provavelmente não é a maneira mais eficaz de fazer o que você está pedindo, mas aespipe é uma ferramenta versátil, então eu achei que valeu a pena mencionar.

    
por 01.05.2014 / 03:38
10

Você pode usar o 7zip para criar seu arquivo protegido por senha. Você pode especificar a senha na linha de comando (ou em um script) da seguinte maneira:

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

7zip também pode ler a partir de STDIN da seguinte forma:

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

Se for obrigatório usar arquivos zip, convém brincar com o parâmetro -t<type> (por exemplo, -tzip ).

    
por 17.10.2014 / 11:52
7

Nem tar, gzip nem bzip2 suportam proteção por senha. Use um formato de compactação como o zip ou criptografe-o com outra ferramenta como o GnuPG.

    
por 12.07.2010 / 14:52
3

Crie com:

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

Ele pedirá uma senha.

Descriptografar com:

gpg -d passwordprotectedarchive.tar.gz.gpg | tar xzvf -
    
por 23.05.2017 / 14:25