2010-07-12 12:50:47 +0000 2010-07-12 12:50:47 +0000
139
139

Como proteger os ficheiros gzip por palavra-passe na linha de comando?

Quero criar alguns ficheiros tar.gz (e possivelmente tar.bz2), usando o comando tar no Ubuntu 10.04.

Quero proteger o ficheiro com palavra-passe.

Qual é o comando para fazer isto (pesquisei no Google, mas não encontrei nada que mostre como criar e extrair ficheiros comprimidos usando uma palavra-passe).

Alguém sabe como fazer isto?

Respostas (6)

165
165
165
2010-07-12 13:05:22 +0000

tem de aplicar a filosofia unix a esta tarefa: uma ferramenta para cada tarefa.

asfalto e compressão é um trabalho para tar e gzip ou bzip2, criptografia é um trabalho para gpg ou openssl:

Encrypt

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

Decrypt

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

Or usando gpg*

% gpg --encrypt out.tar.gz

a variante openssl usa encriptação simétrica, teria de informar a parte receptora sobre a ‘password’ utilizada (também conhecida como ‘a chave’). a variante gpg utiliza uma combinação de encriptação simétrica e assimétrica, utiliza-se a chave do destinatário (o que significa que não tem de dizer a ninguém a palavra-passe envolvida) para criar uma chave de sessão e criptografar o conteúdo com essa chave.

se seguir a rota zip (ou 7z): essencialmente o mesmo que a variante openssl, tem de informar o destinatário sobre a palavra-passe.

31
31
31
2012-06-17 20:12:34 +0000

Se a sua intenção é apenas proteger os ficheiros com password, então use o utilitário zip manual através da linha de comando

zip -e <file_name>.zip <list_of_files>

-e pede ao utilitário zip para encriptar os ficheiros 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*
22
22
22
2014-05-01 01:38:27 +0000

Eis algumas formas de o fazer. Uma coisa a notar é que se vai utilizar ferramentas de compressão e encriptação separadas, deve sempre comprimir antes da encriptação, uma vez que os dados encriptados são essencialmente não-compressíveis.

Estes exemplos comprimem e encriptam um ficheiro chamado clear_text.

Usando gpg

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

gpg irá comprimir o ficheiro de entrada antes da encriptação por defeito, -c significa usar a encriptação simétrica com uma palavra-passe. O ficheiro de saída será clear_text.gpg. Um dos benefícios de utilizar gpg é o de utilizar formatos padrão OpenPGP, pelo que qualquer software de encriptação que suporte OpenPGP será capaz de o desencriptar.

Usando mcrypt

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

A opção -z comprime. Por defeito, isto produz um ficheiro chamado clear_text.gz.nc.

Usando bcrypt

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

bcrypt comprime antes de encriptar por defeito, a opção -r é para que o ficheiro de entrada não seja apagado no processo. O ficheiro de saída é chamado clear_text.bfe por defeito.

Usando gzip e aespipe 0x6&

$ 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 soa, um programa que recebe a entrada em stdin e produz dados encriptados em stdout. Não suporta compressão, pelo que se pode canalizar primeiro a entrada através do gzip. Uma vez que a saída vai para stdout, terá de a redireccionar para um ficheiro com um nome à sua escolha. Provavelmente não é a forma mais eficaz de fazer o que se pede, mas o aespipe é uma ferramenta versátil, por isso achei que valia a pena mencioná-lo.

16
16
16
2014-10-17 09:52:46 +0000

Pode usar o 7zip para criar o seu arquivo protegido por palavra-passe. Pode especificar a senha na linha de comando (ou num script) da seguinte forma:

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

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

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

Se for obrigatório utilizar ficheiros zip, poderá querer brincar com o parâmetro -t<type> (por exemplo, -tzip).

7
7
7
2010-07-12 12:52:34 +0000

Nem alcatrão, gzip, nem bzip2 suporta protecção por palavra-passe. Ou usa um formato de compressão que o faz, como o zip, ou encripta-o com outra ferramenta como o GnuPG.

5
5
5
2017-05-23 12:25:37 +0000

Criar com:

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

Pedir-lhe-á uma palavra-passe.

Decodificar com:

Decodificar com:

Decodificar com:

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