ฉันมีการสอบไดเรกทอรีที่มี 2 ไฟล์อยู่ในนั้น ฉันต้องการลบไฟล์ แต่สิทธิ์ถูกปฏิเสธ rm -rf
คำสั่งแม้ไม่สามารถลบไฟล์เหล่านี้ ฉันเข้าสู่ระบบในฐานะผู้ใช้รูท
ฉันมีการสอบไดเรกทอรีที่มี 2 ไฟล์อยู่ในนั้น ฉันต้องการลบไฟล์ แต่สิทธิ์ถูกปฏิเสธ rm -rf
คำสั่งแม้ไม่สามารถลบไฟล์เหล่านี้ ฉันเข้าสู่ระบบในฐานะผู้ใช้รูท
คำตอบ:
จากผู้ใช้รูทแอ็ตทริบิวต์ของไฟล์
# lsattr
หากคุณสังเกตเห็นi
(ไม่เปลี่ยนรูป) หรือa
(ผนวกเท่านั้น) ลบแอตทริบิวต์เหล่านี้:
# man chattr
# chattr -i [filename]
# chattr -a [filename]
สาเหตุที่พบบ่อยที่สุดสำหรับการrm
บ่นว่าคุณไม่ได้รับอนุญาตให้ลบไฟล์คือการอนุญาตในไดเรกทอรีห้ามมิให้คุณลบไฟล์ ในการลบไฟล์คุณต้องมีสิทธิ์เขียนในไดเรกทอรี สิทธิ์ในไฟล์นั้นไม่เกี่ยวข้อง ( rm
โดยไม่ต้อง-f
แจ้งให้ยืนยันก่อนที่จะลบไฟล์แบบอ่านอย่างเดียว แต่เป็นเพียงการยืนยันไม่ใช่ข้อ จำกัด ) ใน Unix บางรุ่นเช่น OSX (แต่ไม่ใช่ Linux), ACLบนไฟล์สามารถป้องกันการลบได้ ls -l
จะแสดง@
ที่ส่วนท้ายของฟิลด์สิทธิ์หากมีรายการ ACL ในไฟล์
การเข้าถึงในขณะที่รูทผ่านการอนุญาตดังนั้นรูทสามารถลบไฟล์ได้แม้ในไดเรกทอรีอ่านอย่างเดียว
เอาต์พุตจากls -l
แสดง.
ที่ท้ายคอลัมน์สิทธิ์ สิ่งนี้บ่งชี้ว่าไฟล์นั้นมีบริบทความปลอดภัยของ SELinux ไม่เหมือนกับสิทธิ์พื้นฐานและ ACL บริบทความปลอดภัยของ SELinux ในไฟล์สามารถควบคุมผู้ที่ได้รับอนุญาตให้ลบได้ นอกจากนี้ SELinux ไม่สามารถข้ามผ่านรูตได้เสมอ (เป็นไปได้ที่จะมีกระบวนการที่ทำงานเป็น ID ผู้ใช้ 0 แต่มีสิทธิ์น้อยที่สุดเท่าที่ผู้ออกแบบนโยบาย SELinux เลือก) หากต้องการดูว่าบริบท SELinux ls -lZ . exam_a
ช่วยให้คุณสามารถทำระยะ
สิ่งที่สามารถป้องกันไฟล์ที่ถูกลบก็คือถ้ามันหรือไดเรกทอรีที่มีก็มีผนวกอย่างเดียวหรือไม่เปลี่ยนรูปแอตทริบิวต์ลินุกซ์ เรียกใช้lsattr -d . exam_a
เพื่อดูแอตทริบิวต์ Linux หากเปิดคุณสมบัติa
หรือi
คุณจะต้องลบมัน ( chattr -a -i . exam_a
) เพื่อที่จะลบไฟล์; มีเพียง root เท่านั้นที่ทำได้ รูทไม่สามารถข้ามแอตทริบิวต์เหล่านี้เพื่อลบไฟล์ได้ต้องปิดแอตทริบิวต์ก่อน
อีกสิ่งหนึ่งที่ป้องกันไม่ให้ไฟล์ถูกลบคือหากระบบไฟล์ติดตั้งแบบอ่านอย่างเดียว แต่คุณจะได้รับข้อความแสดงข้อผิดพลาดอื่นในกรณีนั้น
ls -la
เพื่อให้เราสามารถดูการอนุญาต.
(ไดเรกทอรี)