Estoy tratando de entender la bandera NOEXEC al montar.
Tengo un problema de ejecución dentro del directorio / tmp en otra máquina que no puedo acceder al cajero automático donde el directorio / tmp está montado en una unidad diferente a '/' y NOEXEC está presente. Quería intentar recrear este escenario en mi máquina, pero no tengo un segundo disco duro. Intenté hacer el siguiente comando:
mount --bind /test1 /test2
Luego eliminé la bind
bandera y agregué NOEXEC
en / etc / fstab. Luego, creé un archivo en / test2 llamado test.sh donde solo echos 'hola mundo'. Intento ejecutarlo y dice 'permiso denegado'. Luego corrí chmod 777 test.sh
y pude ejecutar el archivo muy bien. ¿Pensé que la bandera NOEXEC no debería permitirme ejecutar nada?
¿ mount --bind /test1 /test2
No es lo mismo que montar desde un disco físico completamente diferente? Como en / test1 y / test2 están en unidades diferentes?
fuente
Respuestas:
El indicador de opción 'NOEXEC' en el
mount
comando no permite la ejecución de archivos binarios ejecutables en el sistema de archivos montado 1 . Sin embargo, cuando un script (un archivo de texto que comienza con la línea she-bang; es decir, una línea que comienza con#!
) se entrega a algunos shells (bash), ejecutará el ejecutable nombrado en esa línea (por ejemplo,/usr/bin/perl
) y pasará el ruta del script de shell como primer argumento. El intérprete real podría no estar en ese punto de montaje.__________
1 El
mount
comando generalmente monta un sistema de archivos . (Podría decirse que el loop-back o losbind
montajes pueden considerarse una excepción a esta generalidad). En algunos casos (por ejemplo,/tmp
), este sistema de archivos contendrá solo un directorio.fuente
#!/bin/sh
en la parte superior. No sé cómo se ejecuta el script de shell además de pasar por Java y las referencias / bin / sh. Si hace referencia a / bin / sh y el directorio bin tiene privilegios de ejecución, ¿por qué los scripts de shell no se ejecutarían como lo hicieron en mi prueba?