Directorio con permiso + x, padres sin él. ¿Cuándo sería esto útil?


11

Digamos que tengo una carpeta llamada folderen la siguiente ruta:

my_path = /a/b/c/d/e/folder

y un archivo llamado fileen esa carpeta.

Luego, digamos que ejecuto este comando para eliminar los permisos de grupo en / a /

> chmod g-rwx -R /a/

Ahora, digamos que doy +rxpermisos a folder:

> chmod g+rx /a/b/c/d/e/folder

Luego, si se ejecuta un segundo usuario en mi grupo:

> ls /a/b/c/d/e/folder

o

> cat /a/b/c/d/e/folder/file 

ella recibe errores de permiso, y hasta donde yo entiendo esto es porque necesito proporcionar g+xacceso a todos los padres de folder. Mi pregunta es, ¿ cuándo o por qué sería útil dar +xpermiso a un directorio cuyo padre no lo tiene?

Gracias


1
¿Estás seguro de que estás corriendo chmod +grx -R /a/b/c/d/e/folder? Está mal, la forma correcta de ejecutarlo es:chmod g+rx -R /a/b/c/d/e/folder
nozimica

3
No responde directamente a esta pregunta, pero recomienda la lectura de antecedentes: explicación de los permisos de directorio
Gilles 'SO- deja de ser malvado'

Respuestas:


6

La mayoría de las veces, si desea bloquear el acceso y el uso de un directorio completo (incluido su subdirectorio), puede hacerlo eliminándolo (no de forma recursiva) -x. Por lo tanto, puede haber dejado subdirectorios con +x, sin hacer daño.

Mantener los permisos en los subdirectorios puede ser útil por varias razones (especialmente cuando -xno se aplica a todos, pero al menos un usuario aún puede hacer algo).

Por ejemplo, podría bloquear el uso del directorio contenedor temporalmente, mientras realiza otros cambios en los permisos dentro de esa estructura de directorio, y luego volver a habilitar el acceso a todo el árbol en una sola operación (dando +xal directorio de nivel superior).

También podría tener una situación en la que una secuencia de comandos (no necesariamente ejecutada por el propietario) realiza una copia de seguridad del árbol de directorios en una ubicación temporal (que no debería ser legible por otros) y coloca todo en un archivo tar, preservando la configuración de permisos del contenido del directorio.


7

Necesita permisos + x en todos los directorios principales para crear un CD o acceder a un archivo en un directorio.

Necesita permisos + r en los directorios para enumerar los archivos. Así que aquí hay un ejemplo:

puede emitir estos comandos para obtener algunas configuraciones:

mkdir -p /a/b

touch /a/b/{file1,file2}

cd /a

echo 1 > b/file1

echo 2 > b/file2

Sin derechos:

pwd
/a$ pwd
/a
/a$ chmod -rwx b
/a$ ls -l
d---------  4 mike  admin  136 Jun  1 14:44 b/
/a$ ls -l b/
ls: : Permission denied
/a$ cat b/file1
cat: b/file1: Permission denied

Con ejecutar solo

/a$ chmod +x b
/a$ ls -l
total 0
d--x--x--x  4 mike  admin  136 Jun  1 14:44 b/
/a$ ls -l b
ls: b: Permission denied
/a$ cat b/file1
a
/a$ ls -l b/file1
-rw-r--r--  1 mike  admin  2 Jun  1 14:43 b/file1

Ahora con lectura:

/a$ chmod +r b/
/a$ ls -l
/a$ ls -l
total 0
dr-xr-xr-x  4 mike  admin  136 Jun  1 14:44 b/
/a$ ls -l b/
total 16
-rw-r--r--  1 mike  admin  2 Jun  1 14:43 file1
-rw-r--r--  1 mike  admin  2 Jun  1 14:43 file2

Esta parte puede ser un poco confusa, pero con solo leer y no ejecutar, en realidad puede enumerar los archivos en el directorio, pero no leer los metadatos de inodes, por lo que obtendrá el permiso denegado pero aún podrá ver la lista de archivos en un directorio como a continuación ..

/a$ chmod -x b/
/a$ ls -l
total 0
dr--r--r--  4 mike  admin  136 Jun  1 14:44 b/
/a$ ls -l b
ls: file1: Permission denied
ls: file2: Permission denied

2
Gracias @skrewler. Usted dijo: "Necesita permisos + x en todos y cada uno de los directorios principales para crear un CD o acceder a un archivo en un directorio", que es lo que pensé. Mi pregunta entonces es: ¿por qué nunca dará + x permiso a un directorio cuyos padres no no tienen permiso + x?
Amelio Vazquez-Reina

Lo único en lo que puedo pensar es si desea hacer un montaje de enlace directamente allí, omitiendo los directorios principales sin los permisos de ejecución. Si eso no tiene sentido, mostraré un ejemplo.
skrewler

Lo anterior debería haber sido más claro. Un usuario root con permisos para todos los directorios principales podría hacer que este enlace se monte para permitir que otros usuarios lleguen al directorio. Dado que podrían alcanzar / a / b / c / d / e donde solo d o e tenía ejecución global, podría realizar un montaje de enlace desde / mnt / d -> / a / b / c / d / e y un usuario podría alcanzar yendo al punto de montaje. Es la misma idea que hacer un enlace rígido a algún lugar profundo en un árbol de directorios que de otra forma sería inalcanzable. Sin embargo, los enlaces simbólicos no funcionan así, se necesita un montaje de enlace.
skrewler

2

Desea usar +xpermisos no recursivos en la situación que otorgó:

chmod g+x /a /a/b /a/b/c /a/b/c/d /a/b/c/d/e

(Eso supone que el usuario es miembro del grupo de cada directorio. De lo contrario, tendría que hacerlo chmod o+xpara dichos directorios).

Para que un usuario lo haga con ls /a/b/c/d/e/folderéxito, debe tener permiso de ejecución en cada directorio de la ruta y leer permiso en folder.

Si lo hiciste

chmod g+x -R /a

funcionaría, pero le daría permiso de ejecución de grupo a cada archivo y directorio bajo / a. Eso es innecesario y, en el caso de los archivos, probablemente esté mal.


1

En la situación particular a la que se enfrenta, el problema es que, incluso si foldertiene los permisos adecuados para que algún usuario acceda desde su propio grupo, si alguna de las carpetas principales de folderno está accesible para ese usuario, entonces no podrá acceda al interior (el que se llama folderen su ejemplo).

Si ejecuta:

chmod g-rwx -R /a/

entonces ay todos sus hijos tendrán ese permiso.

Cuando ejecutas:

chmod g+rx -R /a/b/c/d/e/folder

entonces foldery todos sus hijos tendrán ese permiso también. Pero, con este comando posterior, las carpetas a/, a/betc., hasta a/b/c/d/eque no cambien sus permisos.


0

El caso común para eliminar el bit x en los directorios es bloquear a los usuarios en sus directorios de inicio. Los shells restringidos tienen la opción de no permitir cdhacer referencia a nombres de ruta absolutos y no permitir la ejecución de programas que usan rutas absolutas. Tampoco pueden acceder cd ..al directorio principal de su directorio principal y, por lo tanto, están efectivamente bloqueados y no pueden ejecutar ningún programa que no esté en $ PATH.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.