ฉันมีแผนผังไดเรกทอรีที่ฉันต้องการทำลายด้วยยูทิลิตี้ 'ฉีก' ยูทิลิตี้ น่าเสียดายที่ shred ไม่มี-R
ตัวเลือกสำหรับ shredding แบบเรียกซ้ำ
ฉันจะทำลายแผนผังไดเรกทอรีทั้งหมดแบบวนซ้ำได้อย่างไร
ฉันมีแผนผังไดเรกทอรีที่ฉันต้องการทำลายด้วยยูทิลิตี้ 'ฉีก' ยูทิลิตี้ น่าเสียดายที่ shred ไม่มี-R
ตัวเลือกสำหรับ shredding แบบเรียกซ้ำ
ฉันจะทำลายแผนผังไดเรกทอรีทั้งหมดแบบวนซ้ำได้อย่างไร
คำตอบ:
ใช้find
คำสั่งเพื่อดำเนินการshred
ซ้ำ:
find <dir> -type f -exec shred {} \;
man shred
สำหรับข้อมูลที่แม่นยำยิ่งขึ้นโปรดดู
srm
จากคำตอบของ @ Cookie จะพยายามทำให้ปัญหานี้หมดไปอย่างน้อย)
-exec shred {} +
เพื่อทำให้เร็วขึ้นตั้งแต่เครื่องฉีกรับข้อโต้แย้งหลายข้อ
ระวังฉีก!
จากหน้าเว็บย่อย:
ข้อควรระวัง: โปรดทราบว่า shred อาศัยสมมติฐานที่สำคัญมาก: ระบบไฟล์จะเขียนทับข้อมูล นี่เป็นวิธีดั้งเดิมในการทำสิ่งต่าง ๆ แต่การออกแบบระบบไฟล์ที่ทันสมัยจำนวนมากไม่เป็นไปตามสมมติฐานนี้ ต่อไปนี้เป็นตัวอย่างของระบบไฟล์ที่ shred ไม่มีประสิทธิภาพหรือไม่รับประกันว่าจะมีผลบังคับใช้ในโหมดระบบไฟล์ทั้งหมด:
ระบบไฟล์ที่มีโครงสร้างหรือเจอร์นัลเช่นที่มาพร้อมกับ AIX และ Solaris (และ JFS, ReiserFS, XFS, Ext3, ฯลฯ )
ระบบไฟล์ที่เขียนข้อมูลซ้ำซ้อนและดำเนินการต่อไปแม้ว่าบางการเขียนจะล้มเหลวเช่นระบบไฟล์ที่ใช้ RAID
ระบบไฟล์ที่สร้างสแน็ปช็อตเช่นเซิร์ฟเวอร์ NFS ของ Network Appliance
ระบบไฟล์ที่แคชในตำแหน่งชั่วคราวเช่นไคลเอ็นต์ NFS เวอร์ชัน 3
ระบบไฟล์บีบอัด
ในกรณีของระบบไฟล์ ext3 ข้อจำกัดความรับผิดชอบข้างต้นจะนำไปใช้ (และทำลายอย่างมีประสิทธิภาพ จำกัด ) เฉพาะใน data = โหมดเจอร์นัลซึ่งเจอร์นัลข้อมูลไฟล์นอกเหนือจากเมตาดาต้าเท่านั้น ในทั้ง data = สั่ง (ค่าเริ่มต้น) และ data = writeback โหมด shred ทำงานตามปกติ โหมดการเจอร์นัล Ext3 สามารถเปลี่ยนแปลงได้โดยการเพิ่ม data = something ตัวเลือกไปยังตัวเลือกการเมาท์สำหรับระบบไฟล์เฉพาะในไฟล์ / etc / fstab ดังที่บันทึกไว้ในหน้า man mount (man mount)
นอกจากนี้การสำรองข้อมูลระบบไฟล์และมิรเรอร์ระยะไกลอาจมีสำเนาของไฟล์ที่ไม่สามารถลบออกได้และจะอนุญาตให้กู้คืนไฟล์ที่หั่นเป็นชิ้นในภายหลัง
วิธีแก้ไข:ใช้ระบบไฟล์ที่เข้ารหัสและเพียงแค่ลบไฟล์ของคุณ
shred
และการเข้ารหัสข้อมูลป้องกันการอ่านข้อมูลจากอุปกรณ์เก็บข้อมูลออฟไลน์ (คิดว่าขโมยหรือตำรวจ) ด้วยการเข้ารหัสข้อมูลที่มีประโยชน์เพิ่มเติมในการปกป้องไฟล์ทั้งหมดไม่เพียง แต่ถูกลบ (อย่างถูกต้อง) เมื่อติดตั้งระบบไฟล์แล้วเราจะกลับไปใช้สิทธิ์ unix ที่ดีทั้งในกรณีและการปกป้องข้อมูลกลายเป็นหน้าที่ของความปลอดภัยของระบบปฏิบัติการและการบริหารระบบที่เหมาะสมอีกครั้ง การเข้ารหัสระบบไฟล์ล่วงหน้านั้นไม่ได้เลวร้ายยิ่งกว่าการปกป้องข้อมูลที่เหลือกว่าการใช้งานเชิงกลยุทธ์ของshred
!
ใช้การลบที่ปลอดภัยแทน
sudo apt-get install secure-delete
srm -r pathname
เสร็จสิ้น Secure delete เป็นหวาดระแวงมากกว่า shred โดยใช้ 38 pass แทน 3 ในการทำ single pass อย่างรวดเร็วให้ใช้
srm -rfll pathname
คุณจะได้รับตัวสร้างข้อมูลแบบสุ่มน้อยกว่าและมีเพียงครั้งเดียว
find
วิธีที่เสนอมาซึ่งจะพยายามลบชื่อไฟล์ที่จัดเก็บไว้ด้วยการเปลี่ยนชื่อไฟล์ก่อนที่จะตัดทอนและยกเลิกการเชื่อมโยง
การรวมคำตอบนี้เข้ากับตัวเลือกที่รู้จักกันดีที่สุดสำหรับการทำลายโดยใช้ลิงก์ล้นสแต็กนี้ 'การลบไฟล์อย่างถาวรและปลอดภัยบน CentOS ':
find <directory> -depth -type f -exec shred -v -n 1 -z -u {} \;
แก้ไข: โปรดทราบว่าคำตอบที่ดีที่สุดสำหรับการทำลายไฟล์เดียวบังคับให้ซิงค์ซึ่งเขียนการเปลี่ยนแปลงสื่อบันทึกก่อนที่จะลบไฟล์เพราะระบบไฟล์ที่เจอร์นัลบางส่วนหรือทั้งหมดมีบัฟเฟอร์
หากเป็นไปได้คำสั่ง find ควรเรียกเชลล์สคริปต์บนไฟล์ที่รัน:
shred -v -n 1 /path/to/your/file #overwriting with random data
sync #forcing a sync of the buffers to the disk
shred -v -n 0 -z -u /path/to/your/file #overwriting with zeroes and remove the file
ในแต่ละไฟล์
rm -rvf $1
กับเชลล์สคริปต์ (โดยที่ $ 1 คือ / path / to / your / ไฟล์ที่ส่งผ่านจากการ{}
ขยายในfind... -exec
)
depth
นี่ทำอะไร ยังไม่แน่ใจเกี่ยวกับเครื่องหมายแบ็กสแลชต่อท้าย
find /your/directory -exec shred {} \;
find [dirname] -depth -type f -exec shred -n1 {} \;
นี่เป็นการค้นหาไฟล์ในไดเรกทอรี [dirname] ก่อนแล้วจึงรันshred -n1
คำสั่งในแต่ละไฟล์ เมื่อลบไฟล์และ / หรือไดเรกทอรีการเพิ่ม-depth
เป็นค่าเริ่มต้นเป็นสิ่งที่ดีแม้ว่าจะไม่จำเป็นสำหรับกรณีนี้ เมื่อใช้การเรียงลำดับของคำสั่งนี้กับrm -rf
แทนshred
, -depth
เป็นสิ่งจำเป็นเพื่อให้แน่ใจว่าไดเรกทอรีจะไม่ถูกลบก่อนเนื้อหาของไดเรกทอรีที่มีความพยายามที่จะถูกลบ (จึงก่อให้เกิดข้อผิดพลาด)
shred -N 1
เพราะค่าเริ่มต้นการหั่นย่อย 3 ครั้งคือน้ำมันงู ครั้งเดียวก็เพียงพอหรือ 30 ครั้งจะไม่ทำงาน
shred
วิธีที่ละเอียดที่สุดที่ฉันพบซึ่งรวมถึงการลบไดเรกทอรีด้วยคือการfind
เรียกสคริปต์เพื่อให้shred
:
วิธีนี้ยังจัดการกับชื่อไฟล์อย่างถูกต้องด้วยช่องว่าง
ก่อน - shred
สคริปต์ (ฉันชื่อฉันdirShredder.sh
และเก็บไว้ใน/root
ไดเรกทอรี:
shred -v -n 1 "$1" #overwriting with random data
sync #forcing a sync of the buffers to the disk
shred -v -n 0 -z -u "$1" #overwriting with zeroes and remove the file
rm -rvf "$1" # call rm to remove the directories
จากนั้นเรียกสคริปต์เช่นนี้:
find /volume1/pathToShred/ -mindepth 1 -depth -exec /root/dirShredder.sh "{}" \;
ตรวจสอบให้แน่ใจว่าได้ทำเครื่องหมายkillit.sh
ไฟล์เรียกทำงาน ( chmod +x
) และแน่นอนอัปเดตพา ธ สำหรับ dir ที่คุณต้องการทำลายและdirShredder.sh
หากคุณเก็บไว้ที่อื่น
NOTA BENE - shred
มีปัญหาเกี่ยวกับระบบไฟล์ Copy-on-Write (ZFS, BTRFS, et al) และแม้กระทั่งในระบบไฟล์ Journaling ไม่มีวิธีที่ดีที่สุดในการจัดการกับสิ่งนี้ที่ฉันพบว่าไม่ใช่ "ระบบไฟล์ที่เข้ารหัส" ที่แท้จริง แต่ฉันไม่แน่ใจว่าวิธีนี้มีประสิทธิภาพมากน้อยเพียงใด
สิ่งที่ใกล้เคียงที่สุดที่คุณจะได้รับคือเขียนทับพื้นที่ว่างทั้งหมดบนไดรฟ์ด้วยข้อมูลสุ่มหลังจาก ops shredding ของคุณ (ไม่ใช่ศูนย์ดูเหมือนว่ามันจะไม่น่าเชื่อถือเสมอไป) นอกจากนี้ SSD อาจมีข้อควรพิจารณาอื่น ๆ เช่น TRIM
ฉันจะไม่เข้าไปในที่นี่มีคำตอบอื่น ๆ สแต็ค (คำตอบของ @user ที่ไม่รู้จักในคำถามนี้) และการอภิปรายมากมายตลอดทั้ง 'เน็ตที่ครอบคลุมหัวข้อเหล่านี้เพื่อค้นหาพวกเขาหากคุณต้องการระดับความปลอดภัยระดับนั้น