Я наткнулся на неожиданное (для меня) поведение разрешений во FreeBSD. Допустим, я работаю как пользователь без полномочий root . Я создаю файл, устанавливаю его разрешение только для чтения и затем пытаюсь записать в него:
$ 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, но я думаю, что у них похожая настройка.