Para un directorio, el acceso de "lectura" le permite listar los contenidos, y el acceso de "ejecutar" le permite atravesar el directorio para abrir uno de sus elementos secundarios (archivo o subdirectorio). Entonces, si eliminas:
- solo el acceso de lectura, las personas aún pueden acceder a los subdirectorios adivinando sus nombres
- solo el indicador de ejecución, las personas aún pueden enumerar los nombres de los contenidos incluso si no pueden acceder a ellos, y esto aún puede ser revelador
- privilegios de lectura y ejecución en un directorio, todo lo que esté debajo se vuelve inalcanzable y no es necesario realizar un cambio recursivo.
Por supuesto, si realiza un cambio recursivo, un restablecimiento accidental no recursivo de los derechos de acceso al directorio superior tendrá menos consecuencias.
No hace falta decir que, si creó un archivo hace dos días (con un modo de lectura pública) y alguien leyó el archivo ayer o hizo una copia de él, entonces no hay nada que pueda hacer hoy para que ese archivo sea privado.
xenoid dice (de manera algo simplista) que, si elimina el grupo y otros permisos de su directorio (hoy, ahora), "cualquier cosa debajo de él se vuelve inalcanzable, y no necesita hacer un cambio recursivo". Acepto que, si chmod
correctamente su directorio (de nivel superior), nadie más que usted mismo podrá acceder a él en el futuro (es decir, a partir de ahora). Pero hay algunas trampas.
Enlaces duros
¿Recuerdas el archivo que creaste hace dos días? Suponga que su adversario hizo un enlace duro a ese archivo ayer (en lugar de copiarlo). Si chmod
solo su directorio (de nivel superior), entonces ese archivo seguirá teniendo los permisos de lectura pública que asignó cuando lo creó, por lo que el malo aún podrá leerlo en el futuro (potencialmente) incluso si lo modifica posteriormente. eso. Si haces un chmod
recursivo ,que asegurará los permisos en el archivo,lo que afectará el enlace. El malo aún podrá hacer ls -l
en él, para que puedan ver cuándo lo cambias y qué tan grande es, pero no podrán volver a leerlo.
Directorio de trabajo
Supongamos que, bajo su secret
directorio, tienes un plans
directorio, y también es de lectura pública. Y supongamos que, hace cinco minutos, el malo abrió una ventana de terminal y dijo
cd /home/clemisch/secret/plans
Ahora, después de hacer el chmod
el secret
,el directorio de trabajo del malo sigue siendo /home/clemisch/secret/plans
, y pueden continuar enumerando ese directorio y acceder a los archivos allí, potencialmente para siempre. Por supuesto, una vez que cd
en otro lugar, o cerrar esa ventana, o cerrar sesión, o la máquina se reinicia, luego pierden el acceso.
Si haces un chmod
recursivo , que asegurará los permisos sobre todos los archivos y todos los directorios, haciendo que el ocupante ilegal pierda el acceso inmediatamente.
Esto podría no ser un riesgo muy grande si la máquina es una computadora personal a la que se accede solo a través de la consola. Pero, si el malo pudo haber dejado un screen
o tmux
sesión en segundo plano, entonces podrían usar este ataque. Y, si la máquina admite ssh
(u otro acceso remoto; tal vez incluso FTP sería suficiente), se puede usar este ataque.
Error humano
Como señaló xenoid en su respuesta:si haces un chmod
recursivo en secret
hoy y pasado mañana accidentalmente chmod
(solo) el directorio de nivel superior de vuelta a 755, entonces aún estará protegido por el chmod
recursivo de hoy —todos los archivos y directorios bajo secret
seguirá siendo ilegible. (Por supuesto, si crea un nuevo archivo en secret
mañana, y permite que sea legible públicamente, entonces estará expuesto cuando abra los permisos en el secret
directorio. Pero eso sería cierto sin importar si el chmod
de hoy fue recursivo o no.)
mazunki hizo un comentario:"Creo que cp
lleva permisos.” No estoy seguro de lo que querían decir, pero considere este escenario. Quieres hacer un diff
entre dos archivos:
secret/plans/the/quick/brown/fox/file1
secret/jumps/over/the/lazy/dog/file2
Pero no está seguro de dónde están exactamente esos archivos y tiene que hurgar para encontrarlos. Podrías sentirte tentado a hacer
cd plans
cd the/quick # looking for file1
cd brown/fox # found it!
cp file1 /tmp
cd ../../../../..
cd jumps/over
cd the # looking for file2
cd lazy/dog # found it!
diff /tmp/file1 file2
Si haces esto, entonces /tmp/file1
tendrá la misma protección que secret/plans/the/quick/brown/fox/file1
—así que esa es otra razón para hacer el recursivo chmod
hoy.
UNA cosa más
Si el malo abrió uno de sus archivos secretos hace cinco minutos y lo mantiene abierto, podrá leerlo en el futuro, potencialmente incluso si lo modificas. La buena noticia es que este es un ataque algo complicado de ejecutar:el malo debe haber pensado un poco antes de que hagas el chmod
. La mala noticia es que es muy difícil defenderse de este ataque:un chmod recursivo no ayudará.
__________
y, por supuesto, usuarios privilegiados / procesos
PD Puede acortar un poco su comando:chmod go=
es equivalente a chmod g=,o=
. (Eso no hará que el recursivo chmod
más rápido, por supuesto.)