Me topé con un comportamiento de permiso sorprendente (para mí) en FreeBSD. Digamos que estoy operando como usuario no root . Creo un archivo, configuro su permiso en solo lectura y luego intento escribir en él:
$ touch f
$ chmod 400 f
$ ls -l f
-r-------- 1 user wheel f
$ echo a >> t
t: Permission denied.
Hasta ahora tan bueno. Ahora hago lo mismo que root y escribe en el archivo:
# ls -l f2
-r-------- 1 root wheel f2
# echo a >> f2
# echo $?
0
¿Es un error o un comportamiento previsto? ¿Puedo suponer con seguridad que esto funcionaría en cualquier Unix y Linux?
chmod
no puede escribir en el archivo.
touch somefile; chmod 0000 somefile; chmod 0644 somefile
como un usuario normal.
CAP_DAC_OVERRIDE
puede hacer esto. En casi todos los sistemas Linux, esto significa que root puede hacer esto, por lo que es intencional. No puedo hablar por la parte de FreeBSD, pero me imagino que tienen una configuración similar.