Я натрапив на дивовижну (для мене) поведінку дозволу на FreeBSD. Скажімо, я працюю як некореневий користувач. Я створюю файл, встановлюю його дозвіл на режим лише для читання, а потім намагаюся записати в нього:
$ touch f
$ chmod 400 f
$ ls -l f
-r-------- 1 user wheel f
$ echo a >> t
t: Permission denied.
Все йде нормально. Тепер я роблю те саме, що і root, і він записує у файл:
# 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
може зробити це. Майже на всіх системах Linux це означає, що root може це зробити, тому це навмисно. Не можу говорити за частину FreeBSD, але я б уявив, що вони мають подібний параметр.