วิธีสร้างไฟล์แม้ผู้ใช้รูทไม่สามารถลบมันได้


13

วิธีสร้างไฟล์แม้ผู้ใช้รูทไม่สามารถลบมันได้?


9
ในขณะที่คำตอบของ tante ควรครอบคลุมคำถามของคุณ แต่มี meta-comment หนึ่งคำตอบ: มันจะง่ายกว่าที่จะตอบถ้าคุณเพิ่มเหตุผลลงในคำถามของคุณ อาจมีวิธีแก้ไขปัญหาของคุณที่ไม่ได้ประกอบด้วยการป้องกันการลบไฟล์หรือไม่?
fschmitt

คำตอบ:


33

คำตอบง่ายๆ: คุณทำไม่ได้รูทสามารถทำทุกอย่างได้

คุณสามารถตั้งค่าแอ็ตทริบิวต์ "i" ด้วย chattr (อย่างน้อยถ้าคุณอยู่ที่ ext {2,3,4}) ซึ่งทำให้ไฟล์ไม่สามารถเปลี่ยนได้ แต่รูทสามารถยกเลิกการตั้งค่าแอ็ตทริบิวต์และลบไฟล์ต่อไปได้

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

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


ผู้สัมภาษณ์ถามคำถามนี้กับฉัน ฉันไม่รู้คำตอบ ฉันขอคำตอบจากเขา เขาบอกว่าเป็นไปได้และหาทางออกด้วยตัวเอง
Kumar

12
สักวันหนึ่งคุณก็จะเป็นผู้สัมภาษณ์และสามารถถามคำถามที่ไร้สาระของคุณเอง: "สามารถสร้างไฟล์ที่มีขนาดใหญ่จนเขาไม่สามารถทำได้mv" (ซึ่งเป็นเรื่องตลกง่อยตามคริสต์ศาสนศาสตร์และเรื่องตลกที่น่ากลัวถ้าคุณไม่คุ้นเคยกับสนาม)
msw

5
@msw: ใคร ๆ ก็เถียงว่ามันเป็นเรื่องตลกที่น่ากลัวแม้ว่าคุณจะคุ้นเคยกับสนาม
Matthew Crumley

@ matthew crumley: มีความผิดในข้อหา :)
msw

@msw: ฉันเพิ่งสังเกตเห็นว่าคุณยังยอมรับว่ามันเป็นเรื่องตลกที่อ่อนแอ และ FWIW ฉันชอบมุขตลก (บางคน) ดังนั้นฉันจึงชอบมันมาก นี่เป็นหัวข้อที่ค่อนข้างไกล :)
แมทธิวครัมลีย์

34

ใส่ไว้ในซีดีรอม! ;)

(นี่ควรเป็นความคิดเห็น แต่ฉันไม่สามารถแสดงความคิดเห็น ... )


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

6
+1 แต่นั่นจะใช้ได้
Richard Holloway

1
นี่และคำตอบโดย @mouviciel เป็นทางออกที่ถูกต้องเท่านั้น แม้ @root ยิ่งใหญ่ยังคงผูกพันตามกฎที่กำหนดโดยฮาร์ดแวร์
Lie Ryan

15

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


2

นานมาแล้วฉันเขียนเคอร์เนลแพทช์ (2.2.ancient) ที่พยายามลบไฟล์ชื่อ SELFDESTRUCT ฆ่ากระบวนการเรียก เรื่องนี้ได้รับการปกป้องจากอุบัติเหตุ "rm -rf *"


นานมาแล้วและไกล คุณทำ (คำสั่ง) จริง ๆ ได้อย่างไร?
Michael Durrant

1

คุณสามารถใช้chattr +iเพื่อทำให้ไฟล์ไม่เปลี่ยนรูป

แน่นอนว่าผู้ใช้ที่มีความเข้าใจในการเข้าถึงรูทยังคงสามารถใช้chattr -iเพื่อลบแอตทริบิวต์ที่ไม่เปลี่ยนรูปแบบแล้วลบไฟล์ แต่พวกเขาสามารถยกเลิกความพยายามอื่น ๆ ในการบล็อกการเข้าถึงที่ปรากฏในที่นี้ได้เช่นกัน

ฉันจะยืนยันว่าchattrเป็นวิธี Unix ที่ถูกต้องในการทำเช่นนี้

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