web-dev-qa-db-fra.com

Comment protéger par mot de passe les fichiers gzip sur la ligne de commande?

Je veux créer des fichiers tar.gz (et éventuellement tar.bz2) à l’aide de la commande tar sur Ubuntu 10.04.

Je veux protéger le fichier avec un mot de passe.

Quelle est la commande pour faire cela (j'ai googlé, mais rien trouvé qui montre comment créer et extraire des fichiers compressés en utilisant un mot de passe).

Est-ce que quelqu'un sait comment faire cela?

125
morpheous

vous devez appliquer la philosophie unix à cette tâche: un outil pour chaque tâche.

tarring and compression est un travail pour tar et gzip ou bzip2, crypto est un travail pour gpg ou openssl:

Crypter

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

Déchiffrer

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

Ou en utilisant gpg

 % gpg --encrypt out.tar.gz

la variante openssl utilise le cryptage symétrique, vous devez informer le destinataire du mot de passe utilisé (ou "clé"). la variante gpg utilise une combinaison de chiffrement symétrique et asymétrique, vous utilisez la clé de la partie destinataire (ce qui signifie que vous n'avez pas à indiquer de mot de passe à qui que ce soit) pour créer une clé de session et chiffrer le contenu avec cette clé.

si vous choisissez la route Zip (ou 7z): c'est en gros la même chose que la variante openssl, vous devez informer le destinataire du mot de passe.

152
akira

Si vous souhaitez uniquement protéger les fichiers par un mot de passe, utilisez l'utilitaire manuel Zip via la ligne de commande.

Zip -e <file_name>.Zip <list_of_files>

-e demande à l'utilitaire Zip de chiffrer les fichiers mentionnés dans

Exemple de travail:

$ 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

Voici quelques façons de le faire. Une chose à noter est que si vous utilisez des outils de compression et de cryptage distincts, vous devez toujours compresser avant le cryptage, car les données cryptées sont essentiellement non compressibles.

Ces exemples compressent et chiffrent un fichier appelé clear_text.

Utiliser gpg

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

gpg compressera le fichier d'entrée avant le chiffrement par défaut, -c signifie utiliser le chiffrement symétrique avec un mot de passe. Le fichier de sortie sera clear_text.gpg. L’utilisation de gpg présente l’un des avantages de l’utilisation des formats OpenPGP standard. Ainsi, tout logiciel de chiffrement prenant en charge OpenPGP pourra le déchiffrer.

Utiliser mcrypt

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

L'option -z compresse. Par défaut, cela génère un fichier appelé clear_text.gz.nc.

Utiliser bcrypt

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

bcrypt se compresse avant de chiffrer par défaut, l'option -r permet d'éviter la suppression du fichier d'entrée dans le processus. Le fichier de sortie s'appelle clear_text.bfe par défaut.

Utiliser gzip et aespipe

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

cela ressemble à un programme, un programme qui prend une entrée sur stdin et génère des données cryptées sur une sortie standard. Il ne supporte pas la compression, vous pouvez donc diriger l’entrée via gzip en premier. Comme la sortie va sur stdout, vous devrez le rediriger vers un fichier avec le nom de votre choix. Ce n’est probablement pas le moyen le plus efficace de faire ce que vous demandez, mais aespipe est un outil polyvalent, j’ai donc pensé que cela valait la peine d’être mentionné.

19
Graphics Noob

Vous pouvez utiliser 7Zip pour créer votre archive protégée par mot de passe. Vous pouvez spécifier le mot de passe sur la ligne de commande (ou dans un script) de la manière suivante:

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

7Zip peut également lire STDIN comme suit:

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

S'il est obligatoire d'utiliser des fichiers Zip, vous pouvez jouer avec le paramètre -t<type> (par exemple, -tzip).

13
SaeX

Ni tar, ni gzip, ni bzip2 ne prennent en charge la protection par mot de passe. Utilisez un format de compression tel que Zip ou cryptez-le avec un autre outil tel que GnuPG.

7

Créer avec:

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

Il vous demandera un mot de passe.

Décrypter avec:

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