x bit en el directorio Documentación de Arch Linux

x bit en el directorio Documentación de Arch Linux

Me refiero a lo siguienteDocumentación de Arch Linux Access_Control_Lists

Afirma:

Otorgar permisos de ejecución para archivos privados a un servidor web

La siguiente técnica describe cómo a un proceso como un servidor web se le puede otorgar acceso a archivos que residen en el directorio de inicio de un usuario, sin comprometer la seguridad al otorgar acceso a todo el mundo.

A continuación asumimos que el servidor web se ejecuta como el usuario http y le otorgamos acceso al directorio de inicio de geoffrey /home/geoffrey.

El primer paso es otorgar permisos de ejecución al usuario http:

setfacl -m "u:http:--x" /home/geoffrey

Nota: Los permisos de ejecución de un directorio son necesarios para que un proceso enumere el contenido del directorio.

Entonces, en el ejemplo anterior, están configurando los permisos de ejecución para el usuario http en el directorio /home/geoffrey. Según tengo entendido, otorgar solo el bit de ejecución en un directorio NO le permitirá enumerar el contenido de un directorio, pero le permitirá acceder a los archivos (si conoce sus nombres + los permisos de los archivos determinados dentro del directorio tendrían los permisos correctos). conjuntos). Entonces, ¿cómo es posible que con setfacl -m "u:http:--x" /home/geoffreyel usuario http (o el proceso al que se refieren) pueda enumerar el contenido del directorio? ¿Qué me estoy perdiendo?

¡Gracias de antemano!

Respuesta1

Necesita -xpermiso en un directorio para poder acceder a él y a cualquier archivo que contenga. Sin embargo, su acceso a los archivos del directorio depende de los permisos de los archivos, no del directorio en sí. Siempre que tenga derechos de ejecución en el directorio principal (el directorio), no necesitará nada más para acceder a los archivos que contiene. Esto se demuestra más fácilmente con un ejemplo:

$ sudo mkdir dir1 && echo "Hello world!" | sudo tee dir1/file1 && sudo chmod 700 dir1
Hello world!
$ ls -ld dir1/
drwx------ 2 root root 4096 Apr 12 16:09 dir1/
$ sudo ls -l dir1/
total 4
-rw-r--r-- 1 root root 13 Apr 12 16:09 file1

Solo roottiene acceso, por lo que si intentamos enumerar el contenido del directorio o capturar el archivo, fallará:

$ ls dir1/
ls: cannot open directory 'dir1/': Permission denied
$ cat dir1/file1
cat: dir1/file1: Permission denied

Observe cómo catfalla a pesar de que tengo acceso de lectura al archivo. Ahora, si le doy a mi usuario acceso de ejecución al directorio y lo intento nuevamente, puedo leer el archivo:

$ sudo chmod 711 dir1/
$ ls -l
total 4
drwx--x--x 2 root root 4096 Apr 12 16:09 dir1
$ cat dir1/file1
Hello world!

Todavía no puedo enumerar el contenido del directorio ya que eso requeriría acceso de lectura al directorio, pero ahora puedo leer cualquier archivo en el directorio siempre que conozca su ruta.

Entonces, la idea básica es sólida aquí, es sólo esa nota final la que resulta confusa. Necesita acceso de lectura para enumerar el contenido, pero el acceso de ejecución es suficiente si solo necesita darle al httpusuario acceso a archivos específicos cuya ruta se conoce.

Si bien está mal redactada, la nota no es exactamente incorrecta, sino simplemente incompleta. De hecho, necesita permisos de ejecución para podercompletamenteenumerar el contenido de un directorio. Sin ellos, puedes ver los nombres de los archivos pero no los atributos:

$ ls -l
total 4
drwxr--r-- 2 root root 4096 Apr 12 16:09 dir1
$ ls -l dir1/
ls: cannot access 'dir1/file1': Permission denied
total 0
-????????? ? ? ? ?            ? file1

Respuesta2

No te falta nada: si bien la mayor parte de este documento es correcta, la nota es incorrecta.

Puede cruzar su directorio de inicio a otro directorio. Ese otro directorio puede ser legible y cruzable y, por lo tanto, tener su contenido listado.

Creo que hacer que tu casa sea solo transitable es una buena idea, pero también creo que tienes razón, la descripción de lo que hace está mal.

  • Necesita permiso de lectura para enumerar los nombres de archivos en un directorio.
  • Necesita permiso cruzado para statel archivo (descubra cualquier cosa sobre el archivo o ábralo).

¿Ha enviado un informe de error?

información relacionada