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

Jak zabezpieczyć hasłem pliki gzip w wierszu poleceń?

Chcę utworzyć kilka plików tar.gz (i ewentualnie tar.bz2), używając polecenia tar na Ubuntu 10.04.

Chcę zabezpieczyć plik hasłem.

Jaka jest komenda, aby to zrobić (szukałem w google, ale nie znalazłem nic, co pokazuje, jak tworzyć i rozpakowywać skompresowane pliki za pomocą hasła).

Czy ktoś wie, jak to zrobić?

Odpowiedzi (6)

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

musisz zastosować do tego zadania filozofię unixową: jedno narzędzie do każdego zadania.

tarring i kompresja to zadanie dla tar i gzip lub bzip2, crypto to zadanie dla gpg lub 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 using gpg

% gpg --encrypt out.tar.gz

Wariant openssl używa szyfrowania symetrycznego, musiałbyś powiedzieć stronie odbierającej o używanym ‘haśle’ (aka ‘the key’). wariant gpg używa kombinacji szyfrowania symetrycznego i asymetrycznego, używasz klucza strony odbierającej (co oznacza, że nie musisz nikomu zdradzać żadnego hasła) do utworzenia klucza sesji i kryptowania zawartości za pomocą tego klucza.

jeśli idziesz drogą zip (lub 7z): zasadniczo to jest to samo co openssl-variant, musisz powiedzieć stronie odbierającej o haśle.

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

Jeśli twoim zamiarem jest tylko zabezpieczenie plików hasłem, użyj ręcznego narzędzia zip poprzez linię poleceń

zip -e <file_name>.zip <list_of_files>

-e poprosi narzędzie zip o zaszyfrowanie plików wymienionych w

Przykład roboczy:

$ 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

Oto kilka sposobów, jak to zrobić. Jedną rzeczą, którą należy zauważyć jest to, że jeśli zamierzasz używać oddzielnych narzędzi do kompresji i szyfrowania, powinieneś zawsze kompresować przed szyfrowaniem, ponieważ zaszyfrowane dane są zasadniczo niekompresowalne.

Te przykłady kompresują i szyfrują plik o nazwie clear_text.

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

gpg domyślnie skompresuje plik wejściowy przed szyfrowaniem, -c oznacza użycie szyfrowania symetrycznego z hasłem. Plik wyjściowy będzie miał postać clear_text.gpg. Jedną z zalet użycia gpg jest to, że używa on standardowych formatów OpenPGP, więc każde oprogramowanie szyfrujące obsługujące OpenPGP będzie w stanie go odszyfrować.

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

Opcja -z kompresuje. Domyślnie daje to plik o nazwie clear_text.gz.nc.

Użycie bcrypt

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

bcrypt domyślnie kompresuje przed zaszyfrowaniem, opcja -r jest po to, aby plik wejściowy nie został usunięty w procesie. Plik wyjściowy jest domyślnie nazywany clear_text.bfe.

Użycie gzip i 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 jest tym, na co wygląda, programem, który przyjmuje dane wejściowe na stdin i wypisuje zaszyfrowane dane aes na stdout. Nie obsługuje on kompresji, więc możesz najpierw przepuścić dane wejściowe przez gzip. Ponieważ dane wyjściowe trafiają na stdout, będziesz musiał je przekierować do pliku o wybranej przez siebie nazwie. Prawdopodobnie nie jest to najbardziej efektywny sposób na zrobienie tego, o co prosisz, ale aespipe jest wszechstronnym narzędziem, więc pomyślałem, że warto o nim wspomnieć.

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

Możesz użyć 7zip do stworzenia archiwum chronionego hasłem. Możesz podać hasło w wierszu poleceń (lub w skrypcie) w następujący sposób:

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

7zip może również czytać z STDIN w następujący sposób:

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

Jeśli obowiązkowe jest używanie plików zip, warto pobawić się z parametrem -t<type> (np. -tzip).

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

Ani tar, ani gzip, ani bzip2 nie obsługują ochrony hasłem. Albo użyj formatu kompresji, który to robi, takiego jak zip, albo zaszyfruj go za pomocą innego narzędzia, takiego jak GnuPG.

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

Utwórz z:

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

Poprosi Cię o hasło.

Odszyfruj za pomocą:

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