ฉันต้องการสร้างไฟล์ tar.gz (และอาจเป็น tar.bz2) บางไฟล์โดยใช้คำสั่ง tar บน Ubuntu 10.04
ฉันต้องการรหัสผ่านเพื่อป้องกันไฟล์
คำสั่งให้ทำคืออะไร (ฉันมี Googled แต่ไม่พบสิ่งใดที่แสดงวิธีสร้างและคลายบีบอัดไฟล์โดยใช้รหัสผ่าน)
ใครรู้วิธีการทำเช่นนี้?
ฉันต้องการสร้างไฟล์ tar.gz (และอาจเป็น tar.bz2) บางไฟล์โดยใช้คำสั่ง tar บน Ubuntu 10.04
ฉันต้องการรหัสผ่านเพื่อป้องกันไฟล์
คำสั่งให้ทำคืออะไร (ฉันมี Googled แต่ไม่พบสิ่งใดที่แสดงวิธีสร้างและคลายบีบอัดไฟล์โดยใช้รหัสผ่าน)
ใครรู้วิธีการทำเช่นนี้?
คำตอบ:
คุณต้องใช้ปรัชญา unix กับงานนี้: เครื่องมือหนึ่งสำหรับแต่ละงาน
การลอกและการบีบอัดเป็นงานสำหรับtar
และgzip
หรือbzip2
crypto เป็นงานสำหรับอย่างใดอย่างหนึ่ง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
openssl-variant ใช้การเข้ารหัสแบบ symetric คุณจะต้องแจ้งให้ฝ่ายที่รับทราบเกี่ยวกับ 'รหัสผ่าน' ที่ใช้ (หรือที่เรียกว่า 'the key') gpg-variant ใช้การรวมกันของการเข้ารหัสแบบ symetric และ asymetric คุณใช้กุญแจของฝ่ายที่ได้รับ (ซึ่งหมายความว่าคุณไม่จำเป็นต้องบอกรหัสผ่านใด ๆ ที่เกี่ยวข้องกับใคร) เพื่อสร้างกุญแจเซสชันและเข้ารหัสเนื้อหาด้วยกุญแจนั้น
หากคุณไปเส้นทาง zip (หรือ 7z): โดยพื้นฐานแล้วเป็นเช่นเดียวกับตัวแปร openssl คุณต้องแจ้งให้ฝ่ายรับทราบเกี่ยวกับรหัสผ่าน
openssl enc -aes-256-cbc -e -in foo.tar.gz -out bar.tar.gz.enc
หากเจตนาของคุณคือเพียงป้องกันไฟล์ด้วยรหัสผ่านให้ใช้ยูทิลิตี้ zip มือผ่านบรรทัดคำสั่ง
zip -e <file_name>.zip <list_of_files>
-e ถามยูทิลิตี้ zip เพื่อเข้ารหัสไฟล์ที่กล่าวถึง
ตัวอย่างการทำงาน:
$ 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*
นี่เป็นวิธีที่ทำได้ สิ่งหนึ่งที่ควรทราบคือถ้าคุณจะใช้เครื่องมือการบีบอัดและการเข้ารหัสแยกต่างหากคุณควรบีบอัดก่อนการเข้ารหัสเสมอเนื่องจากข้อมูลที่เข้ารหัสนั้นไม่สามารถบีบอัดได้
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
aespipe คือสิ่งที่ดูเหมือนโปรแกรมที่รับอินพุตบน stdin และส่งออกข้อมูลที่เข้ารหัส aes บน stdout ไม่รองรับการบีบอัดดังนั้นคุณสามารถไพพ์อินพุตผ่าน gzip ก่อน เนื่องจากเอาต์พุตไปที่ stdout คุณจะต้องเปลี่ยนเส้นทางไปยังไฟล์ที่มีชื่อที่คุณเลือกเอง อาจไม่ใช่วิธีที่มีประสิทธิภาพที่สุดในการทำสิ่งที่คุณถาม แต่ aespipe เป็นเครื่องมือที่ใช้งานได้หลากหลายดังนั้นฉันคิดว่ามันคุ้มค่าที่จะพูดถึง
คุณสามารถใช้ 7zip เพื่อสร้างที่เก็บรหัสผ่านป้องกันของคุณ คุณสามารถระบุรหัสผ่านในบรรทัดคำสั่ง (หรือในสคริปต์) ด้วยวิธีต่อไปนี้:
7z a -p<password> <someprotectedfile>.7z file1.txt file2.txt
7zip ยังสามารถอ่านจาก STDIN ดังต่อไปนี้:
cat <somefile> | 7z a -si -p<password> <someprotectedfile>.7z
หากจำเป็นต้องใช้ไฟล์ zip คุณอาจต้องการใช้-t<type>
พารามิเตอร์ (เช่น-tzip
)
tar, gzip และ bzip2 ไม่สนับสนุนการป้องกันด้วยรหัสผ่าน ใช้รูปแบบการบีบอัดที่ทำเช่น zip หรือเข้ารหัสด้วยเครื่องมืออื่นเช่น GnuPG
-r
.
สร้างด้วย:
tar czvf - directory | gpg --symmetric --cipher-algo aes256 -o passwordprotectedarchive.tar.gz.gpg
มันจะขอรหัสผ่านจากคุณ
ถอดรหัสด้วย:
gpg -d passwordprotectedarchive.tar.gz.gpg | tar xzvf -
openssl aes-256-cbc -d -in out.tar.gz.enc -out decrypted.tar.gz