ฉันพบพฤติกรรมการอนุญาตที่แปลกใจ (สำหรับฉัน) ใน FreeBSD สมมติว่าฉันทำงานในฐานะผู้ใช้ที่ไม่ใช่รูท ฉันสร้างไฟล์ตั้งค่าการอนุญาตเป็นแบบอ่านอย่างเดียวแล้วลองเขียนลงไป:
$ touch f
$ chmod 400 f
$ ls -l f
-r-------- 1 user wheel f
$ echo a >> t
t: Permission denied.
จนถึงตอนนี้ดีมาก ตอนนี้ฉันทำเช่นเดียวกับรูทและมันเขียนลงในไฟล์:
# ls -l f2
-r-------- 1 root wheel f2
# echo a >> f2
# echo $?
0
มันเป็นข้อบกพร่องหรือพฤติกรรมที่ตั้งใจ? ฉันสามารถสันนิษฐานได้อย่างปลอดภัยว่าสิ่งนี้จะทำงานบน Unix & Linux หรือไม่
chmod
ไม่สามารถเขียนลงไฟล์ได้
touch somefile; chmod 0000 somefile; chmod 0644 somefile
เป็นผู้ใช้ปกติ
CAP_DAC_OVERRIDE
สามารถทำได้ สำหรับระบบลีนุกซ์เกือบทั้งหมดนี่หมายความว่ารูทสามารถทำได้โดยตั้งใจ ไม่สามารถพูดได้สำหรับส่วน FreeBSD แต่ฉันคิดว่าพวกเขามีการตั้งค่าที่คล้ายกัน