Linux - มีวิธีการป้องกัน / ป้องกันไฟล์จากการถูกลบแม้โดย root หรือไม่


89

ฉันมีไฟล์ที่สำคัญมากซึ่งแอปพลิเคชันในที่ทำงานของฉันใช้ฉันต้องตรวจสอบให้แน่ใจว่าไม่ได้ลบไฟล์ใด ๆ ฉันจะทำอย่างไร

linux  files 

13
ทำการสำรองข้อมูลเพื่อให้คุณสามารถกู้คืน ... นอกเหนือจากนั้นchattr +iอาจช่วยได้ แต่จะทำให้ไฟล์เป็นแบบอ่านอย่างเดียว (และสามารถแทนที่ด้วยchattr -i) นอกจากนี้คุณยังสามารถป้องกันด้วย SELInux เป็นต้น
Sven

43
รูทสามารถสร้างกระบวนการที่แม้แต่รูทไม่สามารถฆ่าได้หรือไม่?
Mark Gabriel

4
@ MarkGabriel ใช่ ระเบิดส้อม :)
reirab


8
ผู้ดูแลระบบ HW อาจเข้ามาและนำดิสก์ออกทำลายส่วนที่เหลือและป้อนให้เป็น hoghs หรือดีกว่าโปรแกรมเมอร์ C (++) บางคนอาจชักจูงปีศาจจมูก สิ่งที่สำคัญสำหรับคุณก็ให้สำรอง สองครั้ง
Pavel

คำตอบ:


133

ใช่คุณสามารถเปลี่ยนคุณสมบัติของไฟล์เป็นแบบอ่านอย่างเดียว

คำสั่งคือ:

chattr +i filename

และเพื่อปิดการใช้งาน:

chattr -i filename

จากman chattr:

ไฟล์ที่มีแอiททริบิวต์ไม่สามารถแก้ไขได้: ไม่สามารถลบหรือเปลี่ยนชื่อได้ไม่มีการสร้างลิงก์ในไฟล์นี้และไม่สามารถเขียนข้อมูลลงในไฟล์ได้ เฉพาะ superuser หรือกระบวนการที่มีCAP_LINUX_IMMUTABLEความสามารถเท่านั้นที่สามารถตั้งค่าหรือล้างคุณสมบัตินี้


11
สำหรับผู้ที่สนใจ bsd ที่เทียบเท่าคือchflags schg
Andrew Domaszek

85
โปรดทราบว่าผู้ใช้ที่มีการเข้าถึงรูทสามารถยกเลิกการตั้งค่าสถานะนั้นแล้วลบไฟล์ ที่ไม่น่าจะเกิดขึ้นโดยบังเอิญ แต่ไม่ prorect ต่อการลบโดยเจตนา
อนุญาต

6
@ Grant ไม่ใช่หากSecurelevelตั้งไว้สูงพอ กระบวนการบูตตั้งค่า securelevel เป็น 2 ก่อนที่จะเปิดใช้งานเครือข่ายดังนั้นการรีเซ็ตแฟล็กต้องใช้การเข้าถึงเครื่องโลคัล (แต่นี่หมายความว่าไฟล์ที่ใช้ในกระบวนการบู๊ตก่อนเวลานั้นจะต้องไม่เปลี่ยนรูปเช่นกัน)
Simon Richter

16
@Grant หากคุณต้องการที่จะนำไปใช้มากคุณไม่สามารถป้องกันได้ว่าพาร์ทิชันจะถูกลบหรือดิสก์ถูกวางลงในเตาเผาหรือโปรตอนสลายตัวใน 10 ^ 30 ปี ...
Hagen von Eitzen

2
@Itai Ganot man ฉันหวังว่าฉันได้อ่าน 4 วันที่ผ่านมา ฉันเป็นคำถามในการตรวจสอบฉันเอา = /
vfbsilva

84

เผามันเป็นซีดี ใส่แผ่นซีดีในไดรฟ์ซีดีรอมและเข้าถึงจากที่นั่น


15
+1 เมื่อคิดนอกกรอบ และยังมีการใช้งานมาก่อนในบางสถานการณ์ (ไดรฟ์ cdrom กล่องดำที่มี cd อยู่ในไดรฟ์ส่งไปยังปลายทาง) อาจไม่เหมาะสมหากมีคนสามารถถอดไดรฟ์ออกได้
Alex Mazzariol

1
จูบฉันรักมัน! +1
MonkeyZeus

2
ฉันคิดว่านั่นเป็นคำตอบที่ถูกต้องสำหรับคำถามนี้ การเปลี่ยนแอตทริบิวต์ไฟล์ (chattr -i) ไม่สามารถป้องกันการกระทำที่เป็นอันตราย
Bruno von Paris

7
วันนี้การ์ด SD ขนาดเต็มในเครื่องอ่านการ์ดในตัวอาจเป็นทางออกที่ดีกว่า - ใช้พลังงานน้อยลงเข้าถึงได้เร็วขึ้นในหลาย ๆ กรณีและทนทานมากขึ้นโดยไม่ต้องใช้งานเขียน
Chris H

3
@ jpmc26 ดังนั้นไดรฟ์ซีดีรอม อ่าน / เท่านั้น
Thorbjørn Ravn Andersen

29
  1. สร้างอิมเมจระบบไฟล์
  2. เมานต์ภาพ
  3. คัดลอกไฟล์ไปยังภาพที่ติดตั้ง
  4. ถอนติดตั้งรูปภาพและประกอบใหม่เป็นแบบอ่านอย่างเดียว
  5. ตอนนี้คุณไม่สามารถลบได้

ตัวอย่าง:

# 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

3
mount -o remount,rw readonlyfolder/ && rm readonlyfolder/permanent.txt
Kaz Wolfe

3
ด้วยการเพิ่มสิ่งนี้ไปอีกเล็กน้อยคุณสามารถใช้squashfsหรือcramfsบีบอัดและอ่านอย่างเดียว มันต้องการเครื่องมือพิเศษในการสร้างระบบไฟล์
Zan Lynx

7

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 แน่นอนสิ่งนี้สามารถทำได้เพื่อไดเรกทอรีเช่นกัน


6

คุณควรสร้างฮาร์ดลิงก์หลายลิงค์ไปยังไฟล์เช่นกัน สิ่งเหล่านี้ควรอยู่ในสถานที่ต่าง ๆ ที่ผู้ใช้ทั่วไปไม่สามารถเข้าถึงได้

วิธีนี้แม้ว่าพวกเขาจะจัดการเพื่อแทนที่การป้องกัน chattr ของคุณข้อมูลจะยังคงอยู่และคุณสามารถคืนค่าได้อย่างง่ายดายในตำแหน่งที่แอปพลิเคชันของคุณมองหา


11
ลิงก์ถาวรจะไม่ป้องกันเนื้อหาของไฟล์
200_success

อย่างไรก็ตามพวกเขาจะให้ความคุ้มครองเพิ่มเติมจากการลบซึ่งเป็นคำถามเดิม
บาบี

2
@barbecue หากไฟล์นั้นถูกยกเลิกการเชื่อมโยงกับชื่อที่แอปพลิเคชันมองหามันไม่สำคัญว่าเนื้อหาของไฟล์นั้นจะอยู่ภายใต้ชื่ออื่น สำหรับสิ่งใดก็ตามที่กำลังมองหาไฟล์ที่มีชื่อที่คาดหมายไฟล์นั้นจะยังคงถูกลบไป
CVN

5

คนอื่น ๆ ได้ตอบคำถามของคุณเมื่อคุณถาม ดังที่ @Sven พูดถึงในความคิดเห็นวิธีแก้ปัญหาทั่วไปสำหรับคำถาม "ฉันจะแน่ใจได้อย่างไรว่าฉันจะไม่สูญเสียไฟล์" คือการสร้างการสำรองข้อมูลของไฟล์ ทำสำเนาไฟล์และเก็บไว้ในหลาย ๆ ที่ นอกจากนี้หากไฟล์มีความสำคัญอย่างยิ่งและ บริษัท ของคุณมีนโยบายในการสำรองข้อมูลสำคัญด้วยบริการสำรองข้อมูลคุณอาจดูว่าไฟล์นี้มีอยู่ในบริการหรือไม่


2
แน่นอนว่าไฟล์กำลังถูกสำรองอย่างสม่ำเสมอฉันแค่ต้องการการปกป้องอีกชั้นหนึ่งสำหรับผู้ใช้ซึ่งบางครั้งทำงานบนกล่องที่มีสิทธิ์ผู้ใช้รูท

5

บนลินุกซ์เปลี่ยนรูปธงสนับสนุนเฉพาะในบางชนิดของระบบไฟล์ (ส่วนใหญ่ของคนพื้นเมืองเช่นext4, xfs, btrfs... )

บนระบบไฟล์ที่ไม่รองรับตัวเลือกอื่นคือการผูกไฟล์ไว้เหนือตัวเองในโหมดอ่านอย่างเดียว ที่จะต้องทำในสองขั้นตอน:

mount --bind file file
mount -o remount,bind,ro file

ที่จะต้องมีการทำในแต่ละบูต /etc/fstabแต่สำหรับอินสแตนซ์ผ่าน


ฉันหวังว่าทุกคนumountจะได้รับสิทธิ์ในการเขียนไฟล์อีกครั้ง
whoan

3

ในความคิดเห็นต่อคำตอบของเควินเจอร์รี่กล่าวถึง:

แน่นอนว่าไฟล์กำลังถูกสำรองอย่างสม่ำเสมอฉันแค่ต้องการการปกป้องอีกชั้นหนึ่งสำหรับผู้ใช้ซึ่งบางครั้งทำงานบนกล่องที่มีสิทธิ์ผู้ใช้รูท -

ฉันจะสมมติว่าคุณไม่สามารถเปลี่ยนการปฏิบัตินี้ได้เพราะเป็นความคิดที่แย่จริงๆ

คำแนะนำทั้งหมดเกี่ยวกับการใช้อุปกรณ์แบบอ่านอย่างเดียวมีปัญหาเหมือนกัน - มันทำให้ PITA เป็นคุณที่จะทำการเปลี่ยนแปลงที่ถูกต้องตามกฎหมายเมื่อคุณต้องการ ในกรณีของไดรฟ์ที่ล็อคได้เช่นการ์ด SD คุณพบปัญหาที่คุณมีความเสี่ยงในทันทีเมื่อคุณปลดล็อคเพื่อทำการเปลี่ยนแปลง

สิ่งที่ฉันจะแนะนำแทนคือการตั้งค่าเครื่องอื่นเป็นเซิร์ฟเวอร์ NFS และแชร์ไดเรกทอรีกับไฟล์สำคัญไปยังเครื่องที่ผู้ใช้มีรูท แชร์การเมานต์แบบอ่านอย่างเดียวเพื่อให้เครื่องกับผู้ใช้ที่คุณไม่เชื่อถือไม่สามารถทำการแก้ไขใด ๆ ได้ เมื่อคุณต้องการเปลี่ยนแปลงอย่างถูกต้องคุณสามารถเชื่อมต่อกับเซิร์ฟเวอร์ NFS และทำการเปลี่ยนแปลงของเราที่นั่น

เราใช้สิ่งนี้กับเว็บเซิร์ฟเวอร์ของเราเพื่อให้ผู้บุกรุกสามารถใช้ประโยชน์จากเว็บเซิร์ฟเวอร์ได้อย่างประสบความสำเร็จจะไม่สามารถแทรกหรือเปลี่ยนแปลงไฟล์ใด ๆ ที่เซิร์ฟเวอร์จะให้บริการกลับหรือเปลี่ยนการกำหนดค่า

โปรดทราบว่าสิ่งนี้สามารถทำให้ไม่ผ่านได้ในลักษณะเดียวกับที่จุดเชื่อมต่อทั้งหมดสามารถ:

  • ทำสำเนาของไดเรกทอรีที่มีการป้องกัน
  • ถอนติดตั้งไดเร็กทอรี
  • ย้ายสำเนาแทนการเมานต์หรือเชื่อมโยงเข้าด้วยกันหากการเมานต์นั้นมีพื้นที่ไม่เพียงพอ

เหตุใดจึงเป็น "ความคิดที่เลวร้ายจริงๆ" ในการสำรองไฟล์สำคัญอย่างสม่ำเสมอและพยายามปกป้องต้นฉบับจากการลบโดยไม่ตั้งใจด้วย? ในคำถามดั้งเดิมของ OP และจากความคิดเห็นของ OP เกี่ยวกับคำตอบที่คุณอ้างถึงเป็นที่ชัดเจนว่าข้อกังวลนั้นไม่ใช่กิจกรรมที่เป็นอันตราย แต่เป็นกิจกรรมที่เกิดขึ้นโดยบังเอิญ / ไร้ความสามารถ
Craig

1
@Craig: เป็นความคิดที่ดีที่จะมีผู้ใช้จำนวนมากที่มีรูทโดยเฉพาะอย่างยิ่งหากพวกเขาไม่ไว้วางใจที่จะไม่ยุ่งกับไฟล์สำคัญ
Joe H.

อ่า ... แน่นอนว่ามันคือ :-) แต่นั่นไม่ใช่ประเด็นของคำถามของ OP สหกรณ์ซึ่งถูกกล่าวหาว่ามีเป็นผู้ใช้ที่มีการเข้าถึงรากที่ควรจะได้รับการปกป้องโดยบังเอิญลบไฟล์
Craig

@ Craig: มันอาจจะไม่ใช่ประเด็นของคำถาม แต่มันเป็นปัญหาของปัญหา (ปัญหา XY?) ... แต่ฉันไม่รู้ว่าสิ่งที่พวกเขาทำในฐานะที่เป็นรากดังนั้นหากพวกเขาสามารถใช้ setuid และ / หรือสิทธิ์ sudo จำกัด และคุณควรอ่านคำถามอีกครั้งเนื่องจากฉันไม่เห็นใครพูดถึง Jerry ว่าเขาเพียง แต่พยายามป้องกันการลบโดยไม่ตั้งใจ ("ฉันต้องแน่ใจว่ามันไม่ได้ลบสิ่งใด ๆ ") และเขาก็ให้หนึ่งการติดตามที่ฉันเท่านั้น เห็น (ซึ่งก่อให้เกิดการตอบสนองของฉัน)
Joe H.


2

ทำไมไม่สร้างภาพ ISO 9660 ซึ่งออกแบบโดยอ่านอย่างเดียว?

เมานต์อิมเมจ ISO แล้วมันจะดูเหมือน CD-ROM แต่ด้วยประสิทธิภาพของฮาร์ดไดรฟ์และไฟล์บนอิมเมจที่ติดตั้งจะปลอดภัยจากการลบเช่นเดียวกับไฟล์บนซีดีรอมแบบฟิสิคัล

แนวคิดในการเบิร์นไฟล์ที่มีความละเอียดอ่อนลงบนซีดีและเรียกใช้จากซีดีรอมนั้นน่าสนใจสมมติว่าการตั้งค่าบิตที่ไม่เปลี่ยนรูปในไฟล์นั้นถือว่าไม่เพียงพอ

มีปัญหาด้านลบที่อาจเกิดขึ้นเมื่อใช้งานแผ่นซีดีจริงรวมถึงประสิทธิภาพ (ไดรฟ์ซีดีรอมมีความช้ากว่าฮาร์ดไดรฟ์หรือ SSD มาก) มีความเป็นไปได้ที่ CD-ROM จะถูกลบโดยบุคคลที่มีความหมายดีและแทนที่ด้วยดิสก์อื่นที่พวกเขาต้องการเข้าถึง มีโอกาสที่ฝ่ายที่ประสงค์ร้ายจะเอาแผ่นดิสก์ออกแล้วโยนในไมโครเวฟ (หรือถังขยะ) ดังนั้น "ลบ" ไฟล์ของคุณ มีความไม่สะดวกที่จะต้องมีไดรฟ์ซีดีรอมฮาร์ดแวร์เฉพาะสำหรับไฟล์นั้นและปัจจัยอื่น ๆ

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

ดูเหมือนว่าการเรียกใช้ไฟล์จากอิมเมจ ISO ที่เมาท์จะตอบสนองความต้องการ


1
รูทยังคงสามารถลบไฟล์โดยจัดการภาพโดยตรง มันเป็นเพียงไฟล์ปกติที่จะติดตั้ง
Thorbjørn Ravn Andersen

@ ThorbjørnRavnAndersenเป็นไงบ้าง? ISO 9660 โดยการออกแบบไม่เปลี่ยนรูป ฝ่ายที่ทำการเปลี่ยนแปลงนั้นจะต้องลบและแทนที่ไฟล์ ISO ทั้งหมด ไม่ใช่ว่าพวกเขาทำอย่างนั้นไม่ได้ แต่พวกเขาไม่สามารถเข้าไปและลบไฟล์เดียวโดยไม่ต้องใช้ความเชี่ยวชาญอย่างมากหากถึงตอนนั้น มันจะง่ายกว่ามากถ้าจะเอาซีดีรอมแบบฟิสิคัลออกจากไดรฟ์และโยนลงในถังขยะ ;-)
Craig

ไม่จำเป็นต้องมีความซับซ้อนเพียงเขียนทับไฟล์ภาพด้วยเลขศูนย์
Thorbjørn Ravn Andersen

@ ThorbjørnRavnAndersenฉันจะยอมรับจุดนั้นอย่างง่ายดาย ข้อแม้คือมันจะต้องลงจากหลังม้าโดยเจตนาภาพและเขียนทับมัน perp อย่างละเอียดจะเพียงแค่shredณ จุดนั้น แต่ถ้าคุณปฏิเสธการเข้าถึงเครื่องทางกายภาพดูเหมือนว่าจะยังง่ายกว่าที่จะวาง CD ทางกายภาพออกจากไดรฟ์และโยนลงในถังขยะแทนที่จะทำการถอดและเขียนทับไฟล์ ISO แม้ว่าทั้งสองจะเป็นเรื่องง่าย และ OP ได้ระบุว่าไฟล์สำคัญสำรองอยู่เป็นประจำดังนั้นนี่เป็นเพียงมาตรการเพิ่มเติมสำหรับความเสียหายจากอุบัติเหตุไม่ใช่จากการก่อความเสียหายที่เป็นอันตราย
Craig

ฉันได้ชี้ให้เห็นวิธีการเปลี่ยนภาพ ISO9660 แม้ว่ามันควรจะเปลี่ยนไม่ได้ ประเด็นของฉันคือถ้าบิตสามารถเขียนได้ทั้งหมดรากสามารถเขียนได้
Thorbjørn Ravn Andersen
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.