18 votos

¿Cómo puedo ejecutar un archivo desde una unidad USB FAT?

Estoy intentando instalar una aplicación portátil en mi unidad USB de forma que sea compatible tanto con Ubuntu como con Windows (concretamente, un programa llamado eToys). El soporte ya está incorporado en la aplicación para ambos sistemas operativos - hay etoys.sh para Ubuntu y etoys.exe para Windows. Decidí instalar en una unidad FAT ya que puede ser leída desde ambos sistemas. Esto funciona bien para Windows, pero por alguna razón no puedo ejecutar etoys.sh en Ubuntu.

El problema no es con el archivo - cuando se copia toda la carpeta en el disco duro local, la aplicación funciona perfectamente en Ubuntu. Pero cuando intento ejecutarla desde el USB, abre el archivo en un editor de texto.

A continuación, intenté ejecutarlo desde un terminal, pero recibí el mensaje Permiso denegado.

También he tenido el mismo problema con otros ejecutables.

¿Hay alguna manera fácil de ejecutar cosas desde una memoria USB?

23voto

Debido a las limitaciones del sistema de archivos FA32, no se puede.

Ahora, puedes hacer trampa:

  1. o bien llamar sh etoys.sh en lugar de ./etoys.sh
  2. si quieres, puedes incluso crear otro script (que estaría en tu disco duro, por ejemplo) que simplemente llame a tu script en la unidad USB:

    #!/bin/bash
    sh /media/USB/etoys.sh

8voto

gotch4 Puntos 121

Montaje del dispositivo con -o mode=<value> debería funcionar

mode=value

Poner el modo de todos los archivos en el valor & 0777 sin tener en cuenta los permisos originales. Añade el permiso de búsqueda a los directorios que tienen permiso de lectura. El valor se da en octal.

6voto

TMarshall Puntos 763

De hecho, he encontrado una gran solución en http://ubuntuforums.org/showthread.php?t=1665289 que arregló el problema.

Básicamente, dice que hay que ejecutar el comando

sudo sed -i -e 's|showexec|\x00\x00\x00\x00\x00\x00\x00\x00|g' /usr/lib/udisks/udisks-daemon

y eso evitará que los discos se monten automáticamente con la opción showexec.

No me gusta responder a mi propia pregunta, pero esto me ha funcionado y espero que también ayude a otras personas.

para ubuntu 18.04:

sudo sed -i -e 's|showexec|\x00\x00\x00\x00\x00\x00\x00\x00|g' /usr/lib/udisks2/udisksd

3voto

Virgile Puntos 171

En última instancia, la cuestión parece ser que udisks monta el sistema de archivos con el showexec evitando que cualquier archivo que no termine en .exe , .bat o .com para ser ejecutado.

Una pregunta relacionada (cómo dar opciones de montaje personalizadas a los udisks) se puede encontrar aquí: ¿Cómo configurar la grabación de datos en el pendrive de forma instantánea? Resulta que se puede utilizar udev configuración para hacerlo.

¿Realmente no es posible establecer opciones de montaje por defecto para los udisks? propone otra solución basada en udisks-glue pero parece menos convincente, ya que en última instancia se basa en udisks para que parezca que se pueden añadir opciones, pero no eliminarlas, y en particular showexec sigue ahí).

En cualquier caso, tiendo a preferir eso a Parcheando un archivo binario.

3voto

Kolob Fairbanks Puntos 11

Ninguna de las soluciones mostradas funcionó, hasta donde pude ver, para conseguir que un programa que escribí como un programa de terminal de Linux se ejecutara en mi partición FAT32, pero cambiar el nombre de archivo del programa para incluir la extensión .exe sí funcionó (gracias por el consejo), todo lo que hice fue cambiar el nombre de archivo a filename.exe para el programa de terminal que estaba tratando de ejecutar en una partición FAT32, y luego desmontarlo, volver a montarlo y establecer los permisos de disco para permitir la ejecución, luego ir a filename. exe y establecer sus permisos y, a continuación, la marca de verificación se mantiene en lugar de volver a un menos, y cuando se establece la ruta y entró en ./filename.exe en el símbolo del sistema el programa se ejecutó como debería y muestra la línea de comandos incluyendo filename.exe como entró, aunque el directorio de archivos de Ubuntu muestra el archivo como MSDOS / Windows se ejecuta como un programa de Linux.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X