GNU/Linux >> Tutoriales Linux >  >> Linux

¿Importan los permisos del directorio principal al acceder a un subdirectorio?

Si tengo una carpeta raíz con algún permiso restrictivo, digamos 600, y si las carpetas/archivos secundarios tienen permiso 777, ¿todo el mundo podrá leer/escribir/ejecutar el archivo secundario aunque la carpeta raíz tenga 600?

Respuesta aceptada:

La regla precisa es:puede atravesar un directorio si y solo si tiene permiso de ejecución en él.

Entonces, por ejemplo, para acceder a dir/subdir/file , necesita permiso de ejecución en dir y dir/subdir , más los permisos en file para el tipo de acceso que desea. Entrando en casos de esquina, no estoy seguro de si es universal que necesite permiso de ejecución en el directorio actual para acceder a un archivo a través de una ruta relativa (usted lo hace en Linux).

La forma en que accede a un archivo es importante. Por ejemplo, si tiene permisos de ejecución en /foo/bar pero no en /foo , pero su directorio actual es /foo/bar , puede acceder a los archivos en /foo/bar a través de un camino relativo pero no a través de un camino absoluto. No puedes cambiar a /foo/bar en este escenario; presumiblemente, un proceso más privilegiado ha hecho cd /foo/bar antes de quedar sin privilegios. Si un archivo tiene varios enlaces físicos, la ruta que usa para acceder a él determina sus restricciones de acceso.

Los enlaces simbólicos no cambian nada. El núcleo utiliza los derechos de acceso del proceso de llamada para atravesarlos. Por ejemplo, si sym es un enlace simbólico al directorio dir , necesita permiso de ejecución en dir para acceder a sym/foo . Los permisos en el enlace simbólico en sí pueden importar o no según el sistema operativo y el sistema de archivos (algunos los respetan, otros los ignoran).

Eliminar el permiso de ejecución del directorio raíz restringe efectivamente a un usuario a una parte del árbol de directorios (al que debe cambiar un proceso con más privilegios). Esto requiere que las listas de control de acceso sean de alguna utilidad. Por ejemplo, si / y /home están fuera del alcance de joe (setfacl -m user:joe:0 / /home ) y /home/joe es joe directorio de inicio, luego joe no podrá acceder al resto del sistema (incluida la ejecución de scripts de shell con /bin/sh o binarios vinculados dinámicamente que necesitan acceder a /lib , por lo que necesitaría profundizar más para un uso práctico, p. setfacl -m user:joe:0 /*; setfacl -d user:joe /bin /lib ).

Relacionado:¿Obtener "Permiso denegado" al redirigir la salida de sudo echo "xyz" a un archivo?

El permiso de lectura en un directorio da derecho a enumerar las entradas. En ocasiones, es útil dar permiso de ejecución sin dar permiso de lectura:los nombres de las entradas sirven como contraseñas para acceder a ellas. No puedo pensar en ningún uso en dar permiso de lectura o escritura a un directorio sin permiso de ejecución.


Linux
  1. ¿Cómo eliminar un proceso secundario de Python creado con subprocess.check_output() cuando el padre muere?

  2. ¿El acceso al montón está serializado?

  3. Permiso ejecutivo inesperado de mmap cuando se incluyen archivos de ensamblaje en el proyecto

  4. ¿Qué hace el permiso de ejecución?

  5. ¿Cómo puedo configurar los bits de paridad cuando uso la pantalla para acceder a un puerto serie?

Cómo cambiar permisos en Linux

[CentOS 7 Apache]:Permiso denegado:los permisos de archivo niegan el acceso al servidor

UNIX/Linux:¿Cuál es el permiso correcto de los directorios /tmp y /var/tmp?

Acceso a los registros de acceso sin procesar en cPanel

Permiso denegado al acceder a la carpeta compartida de VirtualBox cuando es miembro del grupo vboxsf

Agregar una línea en el archivo de hosts, obtener permiso denegado al usar sudo - Mac