GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo funcionan los permisos de archivo para el usuario root?

El acceso privilegiado a archivos y directorios en realidad está determinado por las capacidades, no solo por ser root O no. En la práctica, root por lo general tiene todas las capacidades posibles, pero hay situaciones en las que todas/muchas de ellas pueden descartarse, o algunas pueden cederse a otros usuarios (sus procesos).

En resumen, ya describió cómo funcionan las comprobaciones de control de acceso para un proceso privilegiado. Así es como lo afectan las diferentes capacidades:

La capacidad principal aquí es CAP_DAC_OVERRIDE , un proceso que lo tiene puede "omitir la lectura, escritura y ejecución de comprobaciones de permisos de archivos". Eso incluye leer y escribir en cualquier archivo, así como leer, escribir y acceder a directorios.

En realidad, no se aplica a la ejecución de archivos que no están marcados como ejecutables. El comentario en generic_permission (fs/namei.c ), antes de que el acceso verifique los archivos, dice que

Los DAC de lectura/escritura siempre se pueden anular. Los DAC ejecutables se anulan cuando hay al menos un conjunto de bits exec.

Y el código verifica que haya al menos un x bit establecido si está intentando ejecutar el archivo. Sospecho que es solo una característica de conveniencia, para evitar ejecutar accidentalmente archivos de datos aleatorios y obtener errores o resultados extraños.

De todos modos, si puede anular los permisos, puede hacer una copia ejecutable y ejecutarla. (Aunque podría hacer una diferencia en teoría para los archivos setuid de un proceso que era capaz de anular los permisos de archivo (CAP_DAC_OVERRIDE ), pero no tenía otras capacidades relacionadas (CAP_FSETID /CAP_FOWNER /CAP_SETUID ). Pero teniendo CAP_DAC_OVERRIDE permite editar /etc/shadow y cosas por el estilo, por lo que es aproximadamente igual a tener acceso completo a la raíz de todos modos).

También está el CAP_DAC_READ_SEARCH capacidad que permite leer cualquier archivo y acceder a cualquier directorio, pero no ejecutarlos ni escribir en ellos; y CAP_FOWNER eso permite que un proceso haga cosas que generalmente están reservadas solo para el propietario del archivo, como cambiar los bits de permiso y el grupo de archivos.

La anulación del bit fijo en los directorios se menciona solo en CAP_FOWNER , entonces parece que CAP_DAC_OVERRIDE no sería suficiente ignorar eso. (Le daría permiso de escritura, pero por lo general en los directorios fijos lo tiene de todos modos, y +t lo limita.)

(Creo que los dispositivos especiales cuentan como "archivos" aquí. Al menos generic_permission() solo tiene una verificación de tipo para directorios, pero no verifiqué fuera de eso).

Por supuesto, todavía hay situaciones en las que incluso las capacidades no le ayudarán a modificar archivos:

  • algunos archivos en /proc y /sys , ya que en realidad no son archivos reales
  • SELinux y otros módulos de seguridad que podrían limitar la raíz
  • chattr inmutable +i y agregue solo +a banderas en ext2/ext3/ext4, las cuales detienen incluso a la raíz y evitan también el cambio de nombre de archivos, etc.
  • sistemas de archivos de red, donde el servidor puede hacer su propio control de acceso, p. root_squash en NFS mapea root a nadie
  • FUSE, que asumo podría hacer cualquier cosa
  • montajes de solo lectura
  • dispositivos de solo lectura

Eso es exactamente como lo ha notado para los permisos predeterminados:

  • Leer y escribir:
    De forma predeterminada, el usuario raíz puede acceder a cualquier archivo del sistema. Puede eliminar este acceso cambiando los atributos como se explica aquí:chattr. Esto luego se vincula a las capacidades.

  • Ejecutar:
    El usuario raíz no tiene permiso de ejecución a menos que se establezca al menos uno de los bits de ejecución.


El myFile.txt se obtiene por chmod 000 myFile.txt .

0 no permission
1 execute
2 write
3 execute + write
4 read 
5 read + execute
6 read + write
7 all

--------- significa que no hay permiso para usuario, grupo y otros.

El usuario raíz tiene un acceso sin restricciones posibilidad de modificar este archivo. Se concede la lectura/escritura. Para ejecutar este archivo, el usuario raíz debe hacerlo ejecutable de todos modos. (chmod 100, 010 o 001)


Linux
  1. Cómo buscar archivos grandes en la consola

  2. ¿Cómo especifico el archivo clave para sshfs?

  3. Comprensión de la propiedad del archivo del usuario en la ventana acoplable:cómo evitar cambiar los permisos de los volúmenes vinculados

  4. ¿Cómo hacer que ssh inicie sesión como el usuario correcto?

  5. ¿Cómo hago que Sudo solicite la contraseña de root?

Cómo cambiar recursivamente los permisos de archivos en Linux

Cómo descomprimir los archivos gz en Linux

¿Cómo puedo arreglar los permisos de mis archivos?

¿Cómo deshabilitar el inicio de sesión SSH para el usuario raíz en Linux?

¿Cómo establecer permisos de archivo predeterminados para todas las carpetas/archivos en un directorio?

¿Cómo fuerzo permisos específicos para nuevos archivos/carpetas en el servidor de archivos de Linux?