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_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.chmod
no puede escribir en el archivo.touch somefile; chmod 0000 somefile; chmod 0644 somefile
como un usuario normal.Respuestas:
Es normal
root
poder anular los permisos de esta manera.Otro ejemplo es
root
poder leer un archivo sin acceso de lectura:Algunos sistemas tienen el concepto de archivos inmutables . Por ejemplo, en FreeBSD:
Ahora incluso
root
no puedo escribir en el archivo. Pero, por supuesto,root
puede eliminar la bandera:Con FreeBSD puede ir un paso más allá y establecer un indicador de kernel para evitar
root
eliminar el indicador:Ahora nadie, ni siquiera
root
puede cambiar este archivo.(El sistema necesita reiniciarse para reducir el nivel de seguridad).
fuente
chattr +i tst
establece 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