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?
files
permissions
root
arrowd
fuente
fuente

CAP_DAC_OVERRIDEpuede 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.chmodno puede escribir en el archivo.touch somefile; chmod 0000 somefile; chmod 0644 somefilecomo un usuario normal.Respuestas:
Es normal
rootpoder anular los permisos de esta manera.Otro ejemplo es
rootpoder leer un archivo sin acceso de lectura:Algunos sistemas tienen el concepto de archivos inmutables . Por ejemplo, en FreeBSD:
Ahora incluso
rootno puedo escribir en el archivo. Pero, por supuesto,rootpuede eliminar la bandera:Con FreeBSD puede ir un paso más allá y establecer un indicador de kernel para evitar
rooteliminar el indicador:Ahora nadie, ni siquiera
rootpuede cambiar este archivo.(El sistema necesita reiniciarse para reducir el nivel de seguridad).
fuente
chattr +i tstestablece un atributo inmutable .Sí, esto es muy normal. root no tiene límites en lectura / escritura (con muy poca excepción), porque él es la raíz.
fuente