ฉันมีไฟล์ที่สำคัญมากซึ่งแอปพลิเคชันในที่ทำงานของฉันใช้ฉันต้องตรวจสอบให้แน่ใจว่าไม่ได้ลบไฟล์ใด ๆ ฉันจะทำอย่างไร
ฉันมีไฟล์ที่สำคัญมากซึ่งแอปพลิเคชันในที่ทำงานของฉันใช้ฉันต้องตรวจสอบให้แน่ใจว่าไม่ได้ลบไฟล์ใด ๆ ฉันจะทำอย่างไร
คำตอบ:
ใช่คุณสามารถเปลี่ยนคุณสมบัติของไฟล์เป็นแบบอ่านอย่างเดียว
คำสั่งคือ:
chattr +i filename
และเพื่อปิดการใช้งาน:
chattr -i filename
จากman chattr
:
ไฟล์ที่มีแอ
i
ททริบิวต์ไม่สามารถแก้ไขได้: ไม่สามารถลบหรือเปลี่ยนชื่อได้ไม่มีการสร้างลิงก์ในไฟล์นี้และไม่สามารถเขียนข้อมูลลงในไฟล์ได้ เฉพาะ superuser หรือกระบวนการที่มีCAP_LINUX_IMMUTABLE
ความสามารถเท่านั้นที่สามารถตั้งค่าหรือล้างคุณสมบัตินี้
chflags schg
เผามันเป็นซีดี ใส่แผ่นซีดีในไดรฟ์ซีดีรอมและเข้าถึงจากที่นั่น
ตัวอย่าง:
# dd if=/dev/zero of=readonly.img bs=1024 count=1024
# mkfs.ext2 readonly.img
# mkdir readonlyfolder
# mount readonly.img readonlyfolder/
# echo "can't delete this" > readonlyfolder/permanent.txt
# umount readonlyfolder
# mount -o ro readonly.img readonlyfolder
# cat readonlyfolder/permanent.txt
can't delete this
# rm readonlyfolder/permanent.txt
rm: cannot remove `readonlyfolder/permanent.txt': Read-only file system
mount -o remount,rw readonlyfolder/ && rm readonlyfolder/permanent.txt
squashfs
หรือcramfs
บีบอัดและอ่านอย่างเดียว มันต้องการเครื่องมือพิเศษในการสร้างระบบไฟล์
Linux มีตัวเลือกที่เรียกว่าbind-mountซึ่งเป็นคุณสมบัติที่ทรงพลังและมีประโยชน์ที่จะรู้ :
% cd $TMP && mkdir usebindmountluke && cd usebindmountluke
% echo usebindmountluke > preciousfile
% sudo mount -B preciousfile preciousfile
% sudo mount -oremount,ro preciousfile
% echo sowhat > preciousfile
zsh: read-only file system: preciousfile
% rm preciousfile
rm: cannot remove ‘preciousfile’: Read-only file system
- สิ่งที่ทำที่นี่คือไฟล์ผูกติดกับตัวเอง (ใช่คุณสามารถทำได้ใน Linux) จากนั้นจะติดตั้งใหม่ในโหมด R / O แน่นอนสิ่งนี้สามารถทำได้เพื่อไดเรกทอรีเช่นกัน
คุณควรสร้างฮาร์ดลิงก์หลายลิงค์ไปยังไฟล์เช่นกัน สิ่งเหล่านี้ควรอยู่ในสถานที่ต่าง ๆ ที่ผู้ใช้ทั่วไปไม่สามารถเข้าถึงได้
วิธีนี้แม้ว่าพวกเขาจะจัดการเพื่อแทนที่การป้องกัน chattr ของคุณข้อมูลจะยังคงอยู่และคุณสามารถคืนค่าได้อย่างง่ายดายในตำแหน่งที่แอปพลิเคชันของคุณมองหา
คนอื่น ๆ ได้ตอบคำถามของคุณเมื่อคุณถาม ดังที่ @Sven พูดถึงในความคิดเห็นวิธีแก้ปัญหาทั่วไปสำหรับคำถาม "ฉันจะแน่ใจได้อย่างไรว่าฉันจะไม่สูญเสียไฟล์" คือการสร้างการสำรองข้อมูลของไฟล์ ทำสำเนาไฟล์และเก็บไว้ในหลาย ๆ ที่ นอกจากนี้หากไฟล์มีความสำคัญอย่างยิ่งและ บริษัท ของคุณมีนโยบายในการสำรองข้อมูลสำคัญด้วยบริการสำรองข้อมูลคุณอาจดูว่าไฟล์นี้มีอยู่ในบริการหรือไม่
บนลินุกซ์เปลี่ยนรูปธงสนับสนุนเฉพาะในบางชนิดของระบบไฟล์ (ส่วนใหญ่ของคนพื้นเมืองเช่นext4
, xfs
, btrfs
... )
บนระบบไฟล์ที่ไม่รองรับตัวเลือกอื่นคือการผูกไฟล์ไว้เหนือตัวเองในโหมดอ่านอย่างเดียว ที่จะต้องทำในสองขั้นตอน:
mount --bind file file
mount -o remount,bind,ro file
ที่จะต้องมีการทำในแต่ละบูต /etc/fstab
แต่สำหรับอินสแตนซ์ผ่าน
umount
จะได้รับสิทธิ์ในการเขียนไฟล์อีกครั้ง
ในความคิดเห็นต่อคำตอบของเควินเจอร์รี่กล่าวถึง:
แน่นอนว่าไฟล์กำลังถูกสำรองอย่างสม่ำเสมอฉันแค่ต้องการการปกป้องอีกชั้นหนึ่งสำหรับผู้ใช้ซึ่งบางครั้งทำงานบนกล่องที่มีสิทธิ์ผู้ใช้รูท -
ฉันจะสมมติว่าคุณไม่สามารถเปลี่ยนการปฏิบัตินี้ได้เพราะเป็นความคิดที่แย่จริงๆ
คำแนะนำทั้งหมดเกี่ยวกับการใช้อุปกรณ์แบบอ่านอย่างเดียวมีปัญหาเหมือนกัน - มันทำให้ PITA เป็นคุณที่จะทำการเปลี่ยนแปลงที่ถูกต้องตามกฎหมายเมื่อคุณต้องการ ในกรณีของไดรฟ์ที่ล็อคได้เช่นการ์ด SD คุณพบปัญหาที่คุณมีความเสี่ยงในทันทีเมื่อคุณปลดล็อคเพื่อทำการเปลี่ยนแปลง
สิ่งที่ฉันจะแนะนำแทนคือการตั้งค่าเครื่องอื่นเป็นเซิร์ฟเวอร์ NFS และแชร์ไดเรกทอรีกับไฟล์สำคัญไปยังเครื่องที่ผู้ใช้มีรูท แชร์การเมานต์แบบอ่านอย่างเดียวเพื่อให้เครื่องกับผู้ใช้ที่คุณไม่เชื่อถือไม่สามารถทำการแก้ไขใด ๆ ได้ เมื่อคุณต้องการเปลี่ยนแปลงอย่างถูกต้องคุณสามารถเชื่อมต่อกับเซิร์ฟเวอร์ NFS และทำการเปลี่ยนแปลงของเราที่นั่น
เราใช้สิ่งนี้กับเว็บเซิร์ฟเวอร์ของเราเพื่อให้ผู้บุกรุกสามารถใช้ประโยชน์จากเว็บเซิร์ฟเวอร์ได้อย่างประสบความสำเร็จจะไม่สามารถแทรกหรือเปลี่ยนแปลงไฟล์ใด ๆ ที่เซิร์ฟเวอร์จะให้บริการกลับหรือเปลี่ยนการกำหนดค่า
โปรดทราบว่าสิ่งนี้สามารถทำให้ไม่ผ่านได้ในลักษณะเดียวกับที่จุดเชื่อมต่อทั้งหมดสามารถ:
ทำไมไม่สร้างภาพ ISO 9660 ซึ่งออกแบบโดยอ่านอย่างเดียว?
เมานต์อิมเมจ ISO แล้วมันจะดูเหมือน CD-ROM แต่ด้วยประสิทธิภาพของฮาร์ดไดรฟ์และไฟล์บนอิมเมจที่ติดตั้งจะปลอดภัยจากการลบเช่นเดียวกับไฟล์บนซีดีรอมแบบฟิสิคัล
แนวคิดในการเบิร์นไฟล์ที่มีความละเอียดอ่อนลงบนซีดีและเรียกใช้จากซีดีรอมนั้นน่าสนใจสมมติว่าการตั้งค่าบิตที่ไม่เปลี่ยนรูปในไฟล์นั้นถือว่าไม่เพียงพอ
มีปัญหาด้านลบที่อาจเกิดขึ้นเมื่อใช้งานแผ่นซีดีจริงรวมถึงประสิทธิภาพ (ไดรฟ์ซีดีรอมมีความช้ากว่าฮาร์ดไดรฟ์หรือ SSD มาก) มีความเป็นไปได้ที่ CD-ROM จะถูกลบโดยบุคคลที่มีความหมายดีและแทนที่ด้วยดิสก์อื่นที่พวกเขาต้องการเข้าถึง มีโอกาสที่ฝ่ายที่ประสงค์ร้ายจะเอาแผ่นดิสก์ออกแล้วโยนในไมโครเวฟ (หรือถังขยะ) ดังนั้น "ลบ" ไฟล์ของคุณ มีความไม่สะดวกที่จะต้องมีไดรฟ์ซีดีรอมฮาร์ดแวร์เฉพาะสำหรับไฟล์นั้นและปัจจัยอื่น ๆ
แต่ OP ทำให้เห็นชัดเจนว่าจุดประสงค์หลักคือเพื่อป้องกันการลบโดยไม่ตั้งใจไม่ใช่การกระทำที่เป็นอันตรายและไฟล์ดังกล่าวได้รับการสำรองและสามารถกู้คืนได้หากเกิดอุบัติเหตุขึ้น แต่เป็นที่ต้องการอย่างสูงที่ไฟล์ไม่เคย ถูกลบโดยไม่ตั้งใจ
ดูเหมือนว่าการเรียกใช้ไฟล์จากอิมเมจ ISO ที่เมาท์จะตอบสนองความต้องการ
shred
ณ จุดนั้น แต่ถ้าคุณปฏิเสธการเข้าถึงเครื่องทางกายภาพดูเหมือนว่าจะยังง่ายกว่าที่จะวาง CD ทางกายภาพออกจากไดรฟ์และโยนลงในถังขยะแทนที่จะทำการถอดและเขียนทับไฟล์ ISO แม้ว่าทั้งสองจะเป็นเรื่องง่าย และ OP ได้ระบุว่าไฟล์สำคัญสำรองอยู่เป็นประจำดังนั้นนี่เป็นเพียงมาตรการเพิ่มเติมสำหรับความเสียหายจากอุบัติเหตุไม่ใช่จากการก่อความเสียหายที่เป็นอันตราย
chattr +i
อาจช่วยได้ แต่จะทำให้ไฟล์เป็นแบบอ่านอย่างเดียว (และสามารถแทนที่ด้วยchattr -i
) นอกจากนี้คุณยังสามารถป้องกันด้วย SELInux เป็นต้น