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.

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.



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.

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.