No se puede ejecutar un script en una unidad externa montada

23

/ Mnt / ext está montado en un sistema de archivos ext2, un disco duro externo. Por alguna razón no puedo ejecutar scripts desde allí. Por favor vea la sesión a continuación.

luntain@plato /mnt/ext $ echo "echo success" > k.sh
luntain@plato /mnt/ext $ chmod 777 k.sh
luntain@plato /mnt/ext $ ./k.sh
-bash: ./k.sh: Permission denied
126luntain@plato /mnt/ext $ ll k.sh
-rwxrwxrwx 1 luntain luntain 13 Jan 23 15:08 k.sh*
luntain@plato /mnt/ext $ 

Me encantaría saber por qué veo el error.

luntain
fuente

Respuestas:

22

Probablemente había un noexecconjunto de atributos cuando se montó el sistema de archivos; tal vez sea su distribución 'característica'.

Para verificarlo, puede ejecutar mountque mostrará las opciones de montaje entre paréntesis, y para eliminar el noexecindicador puede usar mount -o remount,exec /mnt/extdebajo de la raíz.

Además, asegúrese de colocar la opción exec después de la opción de usuario, o el sistema seguirá montando su unidad como noexec.

Whitequark
fuente
3

El sistema de archivos se monta con la opción noexec.

James reinstala a Monica Polk
fuente
3

Un sistema de archivos montado noexecsolo evita la ejecución del script (es decir, pedirle al núcleo que lo ejecute de manera adecuada en función de un número mágico o una línea shebang). No le impide llamar a un intérprete en otro sistema de archivos montado execy pasar el script como argumento (o en stdin) a dicho intérprete. Ergo, si no es root, podrías haber solucionado esto con solo sh k.sh.

pilona
fuente