कमांड लाइन पर gzip फ़ाइलों की सुरक्षा कैसे करें?


130

मैं Ubuntu 10.04 पर टार कमांड का उपयोग करके कुछ tar.gz (और संभवतः tar.bz2) फाइलें बनाना चाहता हूं।

मैं फाइल को सुरक्षित रखने के लिए पासवर्ड चाहता हूं।

ऐसा करने के लिए कमांड क्या है (मैंने Googled है, लेकिन कुछ भी नहीं मिला है जो दिखाता है कि पासवर्ड का उपयोग करके संपीड़ित फ़ाइलों को कैसे बनाया और निकाला जाए)।

किसी को पता है कि यह कैसे करना है?

जवाबों:


159

आपको इस कार्य के लिए यूनिक्स-दर्शन लागू करना होगा: प्रत्येक कार्य के लिए एक उपकरण।

टाररिंग और कम्प्रेशन एक नौकरी है tarऔर gzipया bzip2, क्रिप्टो 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

Opensl-variant सहानुभूति एन्क्रिप्शन का उपयोग करता है, आपको प्राप्त पार्टी को इस्तेमाल किए गए 'पासवर्ड' (उर्फ 'की') के बारे में बताना होगा। gpg-variant सहानुभूति और असममित एन्क्रिप्शन के संयोजन का उपयोग करता है, आप एक सत्र कुंजी बनाने और उस कुंजी के साथ सामग्री को क्रिप्ट करने के लिए प्राप्त पार्टी की कुंजी का उपयोग करते हैं (जिसका अर्थ है कि आपको किसी से जुड़े किसी भी पासवर्ड को बताने की आवश्यकता नहीं है)।

यदि आप ज़िप (या 7z) मार्ग पर जाते हैं: अनिवार्य रूप से वही है जो कि ओपन-वैरिएंट के समान है, तो आपको पासवर्ड के बारे में प्राप्त करने वाले पक्ष को बताना होगा।


26
किसी के लिए भी सोचता है कि फाइल को openssl aes-256-cbc -d -in out.tar.gz.enc -out decrypted.tar.gz
ओपनसिएल के

1
@ nathan.f77 कि कमांड यह भी बताती है कि बिना चीजों को ओपनसिएल में पाइप किए कैसे करना है। openssl enc -aes-256-cbc -e -in foo.tar.gz -out bar.tar.gz.enc
कीथ स्माइली

3
@KeithSmiley यदि आपके पास बड़े संग्रह हैं और बहुत अधिक स्थान नहीं है (जैसे कि यह VPS पर हो सकता है) यह पाइप के लिए अधिक स्थान-कुशल है।
एंड्रयू साविनिख

मैं इसे चलाने के लिए प्रतीत नहीं कर सकते MAC। यह वैसे भी अलग है?
एलिजोन्मार्क

3
@eleijonmarck भाग प्रदान करता है "काम नहीं करता है क्योंकि <डालें-त्रुटि-संदेश-यहाँ>" ...
akira

29

यदि आपका इरादा सिर्फ फाइलों की सुरक्षा का पासवर्ड है, तो कमांड लाइन के माध्यम से हैंड जिप उपयोगिता का उपयोग करें

zip -e <file_name>.zip <list_of_files>

-जिसमें बताई गई फाइलों को एन्क्रिप्ट करने के लिए जिप उपयोगिता पूछती है

काम करने का उदाहरण:

$ 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*

11
ज़िप फ़ाइल एन्क्रिप्शन किसी भी तरह से सुरक्षित नहीं है।
क्रिस्टोफर Ives

4
@ क्रिस्‍टोफर इफ्स आप अनीति पर विस्‍तार से बता सकते हैं?
tscizzle


4
@KristopherIves यह जरूरी है "एक और ज़िप-संग्रह, में एन्क्रिप्टेड संग्रह से फ़ाइलों की कम से कम एक से युक्त एन्क्रिप्ट नहीं किए गए फार्म" काम करने के लिए।
फ्रैंकलिन यू

4
"आपको प्लेनटेक्स (कम से कम 13 बाइट्स) का केवल एक हिस्सा जानने की जरूरत है"। यदि यह पूरी तरह से अनएन्क्रिप्टेड फ़ाइल की आवश्यकता थी (जो पहले से ही बहुत खराब है) की तुलना में यह बहुत अधिक असुरक्षित है। इसके अलावा, जिप एन्क्रिप्शन ब्रूट-फोर्स हमलों (जैसे जैक द रिपर के साथ) के लिए प्रतिरोधी नहीं है। किसी को भी किसी गंभीर चीज के लिए इसका इस्तेमाल नहीं करना चाहिए।
EM0

21

ऐसा करने के कुछ तरीके यहां दिए गए हैं। ध्यान देने वाली एक बात यह है कि यदि आप अलग-अलग संपीड़न और एन्क्रिप्शन उपकरणों का उपयोग करने जा रहे हैं, तो आपको एन्क्रिप्शन से पहले हमेशा संपीड़ित करना चाहिए, क्योंकि एन्क्रिप्टेड डेटा अनिवार्य रूप से गैर-संपीड़ित है।

ये उदाहरण एक फ़ाइल को संपीड़ित और एन्क्रिप्ट करते हैं clear_text

का उपयोग करते हुए gpg

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

gpg डिफ़ॉल्ट रूप से एन्क्रिप्शन से पहले इनपुट फ़ाइल को संपीड़ित करेगा, -cइसका मतलब पासवर्ड के साथ सममित एन्क्रिप्शन का उपयोग करना है। आउटपुट फाइल होगी clear_text.gpg। उपयोग करने gpgका एक लाभ यह है कि मानक 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डिफ़ॉल्ट रूप से कहा जाता है।

का उपयोग कर gzipऔरaespipe

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

एसेसिप वह है जो ऐसा लगता है, एक प्रोग्राम जो स्टड पर इनपुट लेता है और स्टडआउट पर एनक्रिप्टेड डेटा एईएस आउटपुट करता है। यह संपीड़न का समर्थन नहीं करता है, इसलिए आप पहले gzip के माध्यम से इनपुट को पाइप कर सकते हैं। चूंकि आउटपुट स्टडआउट जाता है, इसलिए आपको इसे अपने स्वयं के चुनने के नाम के साथ एक फ़ाइल पर पुनर्निर्देशित करना होगा। संभवत: सबसे प्रभावी तरीका नहीं है कि आप क्या पूछ रहे हैं, लेकिन एसेसिप एक बहुमुखी उपकरण है, इसलिए मुझे लगा कि यह ध्यान देने योग्य है।


15

आप अपना पासवर्ड संरक्षित संग्रह बनाने के लिए 7zip का उपयोग कर सकते हैं। आप कमांड लाइन पर पासवर्ड (या स्क्रिप्ट में) निम्नलिखित तरीके से निर्दिष्ट कर सकते हैं:

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

7zip को STDIN से निम्नानुसार भी पढ़ सकते हैं:

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

यदि ज़िप फ़ाइलों का उपयोग करना अनिवार्य है, तो आप -t<type>पैरामीटर (जैसे -tzip) के साथ खेलना चाह सकते हैं ।


5
मैंने इसे उत्तर के रूप में उठाया क्योंकि यह केवल एक ही है जो प्रश्न का उत्तर देता है। सवाल यह नहीं है कि किसी संदेश को कैसे एन्क्रिप्ट किया जाए, यह एक आर्काइव की रक्षा के लिए पासवर्ड है। मुझे बस इतना ही करना है। (जीमेल मेरे सर्वर बैकअप को रोक रहा था क्योंकि यह तय किया था कि अटैचमेंट में कुछ असुरक्षित था, और मुझे बस एक पासवर्ड जोड़ने की जरूरत थी। यह सुरक्षित नहीं है।)
felwithe

7

न तो टार, gzip, न ही bzip2 पासवर्ड सुरक्षा का समर्थन करता है। या तो एक संपीड़न प्रारूप का उपयोग करें, जैसे ज़िप, या इसे किसी अन्य उपकरण जैसे GnuPG के साथ एन्क्रिप्ट करें।


आह, यह बताता है कि मुझे ऑनलाइन कुछ भी क्यों नहीं मिला। मुझे लगता है कि मैं ज़िप के लिए जाऊंगा।
मोरपंखी जूल

गह !, मैं एक निर्देशिका को पुन: लिखने की कोशिश कर रहा हूँ, जिसमें पासवानों के साथ एक निर्देशिका है, और यह केवल एक (खाली) निर्देशिका के रूप में फोब्बर नाम के साथ एक ज़िप फ़ाइल बनाता है। यहाँ कमांड का उपयोग कर रहा हूँ: zip -e foobar.zip foobar।
फोब्बर

4
जैसा आदमी कहता है, वैसा ही -r
इग्नासियो वाज़केज़-अब्राम्स

5

इसके साथ बनाएँ:

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

यह आपसे पासवर्ड मांगेगा।

के साथ डिक्रिप्ट:

gpg -d passwordprotectedarchive.tar.gz.gpg | tar xzvf -
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.