วิธีล็อคไฟล์จากการลบ แต่ยังทำให้สามารถเขียนได้?


33

ฉันต้องการสร้างไฟล์ที่ถูกล็อคโดยการลบ แต่ยังสามารถเขียนได้ ฉันจะทำสิ่งนี้ได้อย่างไร

ไฟล์ดังกล่าวมีปริมาณ Truecrypt เป็นไฟล์ในเครือข่าย NAS SMB ดังนั้นฉันไม่ต้องการลบโดยไม่ตั้งใจ


1
มันเป็นไปไม่ได้. การเขียนจำนวนศูนย์เพื่อลบ
soandos

@soandos - ฉันไม่เห็นด้วยฉันกลัว เนื่องจากการเขียนเลขศูนย์ลงยังคงหมายความว่ามีไฟล์อยู่ แต่เต็มไปด้วยเลขศูนย์ แน่นอนมีคำสั่ง Linux เพื่อสร้างไฟล์ 'กระจัดกระจาย' เต็มไปด้วยศูนย์
therobyouknow

คำตอบ:


34

สำหรับ Windows:

  1. ปฏิเสธสิทธิ์ "ลบ" ในไฟล์
  2. ลบหรือปฏิเสธสิทธิ์ "ลบรายการย่อย" ในไดเรกทอรีหลัก

สำหรับ Unix (รวมถึง OS X):

  1. ลบสิทธิ์ "เขียน" ในไดเรกทอรีหลัก

โปรดทราบว่านี่จะเป็นการป้องกันไม่ให้ไฟล์ถูกลบ (ถูกลบ) แต่จะไม่ทำอะไรกับการตัดทอนโดยไม่ตั้งใจหรือเขียนทับด้วยขยะ หากไฟล์สามารถเขียนได้คุณสามารถเขียนอะไรก็ได้ลงไป

นอกจากนี้การอนุญาตของไฟล์จะอยู่ถัดจากการแปลระหว่างระบบปฏิบัติการไม่ได้ หาก NAS ใช้งาน Linux และคุณพยายามตั้งค่าการอนุญาตจากภายใน Windows ผลลัพธ์ที่ได้อาจแตกต่างจากที่คุณคาดหวัง


คำตอบที่ดีที่สุดฉันจะได้รับฉันคิดว่า +1 และขอบคุณ ใช่ NAS เป็นรุ่น Lacie 2big ที่รัน linux บน ARM
therobyouknow

1
คุณไม่จำเป็นต้องปฏิเสธการลบเพียงแค่ลบ Delete ออกจากรายการการควบคุมการเข้าถึงที่มีอยู่ (ACE) (ปฏิเสธ ACEs ทำให้สิ่งต่าง ๆ มีความซับซ้อนมากขึ้นซึ่งโดยปกติจะไม่ใช่หลักสูตรที่ดีในระยะยาว)
Richard

2
@Richard: AFAIK การลบต้องปิดการใช้งานการสืบทอด ACL อย่างสมบูรณ์สำหรับไฟล์นั้นซึ่งทำให้ซับซ้อนยิ่งขึ้นในที่สุด
grawity

ฉันเห็นด้วยกับ Grawity ปฏิเสธปฏิเสธสิทธิ์เป็นวิธีที่จะไป หากการอนุญาตให้แชร์ถูกตั้งค่าให้แก้ไขการปฏิเสธจะยังคงบล็อกการลบในขณะที่ปล่อยว่างไว้จะอนุญาตให้ลบได้
surfasb

26

ใน Linux คุณสามารถสร้างฮาร์ดลิงก์ได้ จากนั้นคุณสามารถเขียนถึงมันและ "ลบ" แต่คุณจะลบการอ้างอิงในไดเรกทอรีของคุณเท่านั้น ฮาร์ดลิงค์อื่นจะยังคงชี้ไปที่เนื้อหาของไฟล์ดังนั้นมันจะไม่ถูกลบออกไป

ในโลก Unix คุณไม่ต้อง "ลบ" ไฟล์ คุณเพียงแค่ลดจำนวนการเชื่อมโยงฮาร์ดลงไป เมื่อไม่มีสิ่งใดชี้ไปพื้นที่นั้นจะถือว่าว่างและสามารถใช้ ...


2
ความคิดที่ดี. ไม่ทราบว่า @Rob สามารถสร้างลิงก์ใน NAS ของเขาได้หรือไม่ แต่ถ้าเขาทำได้นั่นเป็นวิธีที่ฉลาดมาก
CarlF

1
+1 ฉันจะทำอย่างนั้นพร้อมกับคำตอบที่ยอมรับถ้าเป็นไปได้ หรือแยกกันถ้าไม่ +1 สำหรับการคิดนอกกรอบดังที่กล่าวไว้ อย่างไรก็ตามการแชร์ linux ในคำถามคือไดรฟ์ NAS ซึ่งไม่แน่ใจว่ามีคอนโซลอำนวยความสะดวกใดบ้างลินุกซ์ในรูปแบบฝังตัวหรือกึ่งฝังตัว +1 ถึงแม้ว่ามันอาจช่วยคนอื่น ๆ ที่มีเดสก์ท็อป linux หรือคอมพิวเตอร์ปกติทำหน้าที่แบ่งปัน
therobyouknow

2
เทคนิคเดียวกันควรทำงานกับ NTFS
Rotsor

+1 RBerteig และ +1 CarlF สำหรับสนับสนุนโซลูชัน woliveirajr
therobyouknow

12

การสำรองข้อมูล คุณไม่สามารถป้องกันไฟล์ที่เขียนได้จากความเสียหายแม้ว่าคุณจะสามารถลบได้ สำรองข้อมูลทุกวัน


4
+1 ทำสิ่งนี้ไม่ว่าจะใช้เข็มขัดและสายแขวนถุงอื่นแบบใด
RBerteig

+1 CarlF และ +1 RBerteig เห็นด้วยอย่างสิ้นเชิง. ไฟล์ทั้งหมดได้รับการสำรองลงสื่อออปติคัลเช่นกัน (DVD-R, + R, + R DL และ blu-ray 25gb และ dl 50gb) ฉันอาจพิจารณาฮาร์ดไดรฟ์ที่สอง
therobyouknow

ฉันควรจะเพิ่มฉันมีการสำรองข้อมูลของไฟล์ภายในปริมาณ Truecrypt ซึ่งเป็นไฟล์คอนเทนเนอร์ ไม่ใช่ปริมาณของ truecrypt
therobyouknow

0

นอกเหนือจากคำตอบก่อนหน้าฉันจะพิจารณาดู selinux คุณสามารถกำหนดข้อ จำกัด ที่ค่อนข้างละเอียดได้


0

ในระบบไฟล์วัวเช่น btrfs คุณสามารถทำสิ่งนี้ได้โดยใช้ subvolumes + snapshots หรือ cp ด้วย --reflink = เสมอสิ่งนี้จะส่งผลอย่างมีประสิทธิภาพในไฟล์จำนวนมากตามที่คุณต้องการซึ่งจะใช้พื้นที่เท่ากับหนึ่ง + ค่าใช้จ่ายบางส่วน (แต่ โดยไม่มีจำนวนสำเนาหรือสแน็ปช็อตรวมกันโดยเฉพาะอย่างยิ่งกับขนาดไฟล์เล็ก ๆ นี้ไม่ควรสังเกตเห็น) จนกว่าจะมีการแก้ไขในกรณีนี้เฉพาะส่วนที่มีการเปลี่ยนแปลงจะถูกเก็บไว้แยกต่างหากและส่วนที่เหลือยังคงใช้ร่วมกัน จากนั้นตั้งค่าการอนุญาตให้แยกกัน (เพื่อให้ได้สิ่งที่คุณต้องการเพียงทำเป็นประจำหรือทำการคัดลอกพร้อมการอนุญาตแบบอ่านอย่างเดียว (และเลือกที่จะเมามัน ro หรือไม่ทั้งหมดถ้ามันเป็น snapshot และถ้ามันเป็นไฟล์ใช้ chattr + i (ผู้ใช้สามารถ ไม่เขียนหรือแก้ไขไฟล์แม้ว่าจะมีสิทธิ์เขียน) ในหนึ่งสำเนาหากคุณหวาดระแวง)


0

ใน UNIX "มาตรฐาน" ดูเหมือนว่าเป็นไปไม่ได้ที่จะป้องกันไฟล์เดียวจากการลบหากไดเรกทอรีนั้นสามารถเขียนได้ โดยสังเขปเราอาจคาดหวังว่าการล้างการป้องกัน w จากบิตโหมดด้วย 'chmod' ควรป้องกันการลบ แต่นี่ไม่ใช่กรณี ในทำนองเดียวกันใน AFS คุณไม่สามารถปกป้องไฟล์เดียวจากการถูกลบเนื่องจากรายการ ACL (ขาดหรือปฏิเสธการอนุญาต 'd' ที่เกี่ยวข้อง) จะใช้กับไดเรกทอรีโดยรวมเท่านั้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.