Estoy tratando de instalar una aplicación portátil en mi unidad USB de modo que sea compatible con Ubuntu y Windows (específicamente, un programa llamado eToys). El soporte ya está integrado en la aplicación para ambos sistemas operativos: hay etoys.sh
para Ubuntu y etoys.exe
para Windows. Decidí instalarlo en un disco FAT ya que se puede leer desde ambos sistemas. Esto funciona bien para Windows, pero por alguna razón no puedo ejecutar etoys.sh en Ubuntu.
El problema no está en el archivo: cuando se copia toda la carpeta en el disco duro local, la aplicación funciona muy bien en Ubuntu. Pero cuando trato de ejecutarlo desde el USB, abre el archivo en un editor de texto.
Luego intenté ejecutarlo desde una terminal, pero recibí el mensaje Permiso denegado.
También he tenido el mismo problema con otros ejecutables.
¿Hay una manera fácil de ejecutar cosas desde una memoria USB?
fuente
Respuestas:
Debido a las limitaciones del sistema de archivos FA32, no puede.
Ahora, puedes hacer trampa:
sh etoys.sh
lugar de./etoys.sh
si lo desea, incluso puede crear otra secuencia de comandos (que estaría en su disco duro, por ejemplo) que simplemente llame a su secuencia de comandos en la unidad USB:
fuente
El montaje del dispositivo
-o mode=<value>
debería funcionarEstablezca el modo de todos los archivos en valor y
0777
sin tener en cuenta los permisos originales. Agregue permiso de búsqueda a directorios que tengan permiso de lectura. El valor se da en octal.fuente
mode=
opción para vfat, ver mount (8) .En realidad encontré una gran solución en http://ubuntuforums.org/showthread.php?t=1665289 que solucionó el problema.
Básicamente, dice ejecutar el comando
y eso evitará que los discos se monten automáticamente con la opción showexec.
No me gusta responder mi propia pregunta, pero esto funcionó para mí y espero que también ayude a otras personas.
para ubuntu 18.04:
fuente
En última instancia, la cuestión parece ser que
udisks
se monta el sistema de archivos con lashowexec
opción, la prevención de cualquier archivo que no terminan en.exe
,.bat
o.com
que se ejecute.Aquí puede encontrar una pregunta relacionada (cómo dar opciones de montaje personalizadas a los udiscos): ¿Cómo configurar para grabar datos para pendrive instantáneamente? Resulta que puedes usar la
udev
configuración para hacer eso.¿Es realmente imposible configurar las opciones de montaje predeterminadas para los udiscos? propone otra solución basada en
udisks-glue
, pero parece menos convincente, ya que en última instancia dependeudisks
, por lo que parece que puede agregar opciones, pero no eliminarlas, y en particularshowexec
todavía está allí).En cualquier caso, tiendo a preferir eso a parchear un archivo binario.
fuente
Ninguna de las soluciones mostradas funcionó hasta donde pude obtener un programa que escribí como un programa de terminal de Linux para ejecutar en mi partición FAT32, pero cambiar el nombre de archivo del programa para incluir la extensión .exe funcionó (gracias por el consejo) , todo lo que hice fue cambiar el nombre de filename 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 configurar los permisos del disco para permitir la ejecución, luego ir al nombre de archivo. exe y establezca sus permisos y luego la marca de verificación se pegaría en lugar de volver a un signo menos, y cuando configuré la ruta e ingresé ./filename.exe en el indicador de terminal, el programa se ejecutó como debería y muestra la línea de comando que incluye el nombre del archivo .exe como se ingresó, aunque el directorio de archivos de Ubuntu muestra el archivo como MSDOS / Windows, se ejecuta como un programa Linux.
fuente
Entonces encontré una solución mucho más simple (y más segura).
Use gparted para formatear el USB FAT32 y luego us Partition => Manage Flags para configurar las siguientes banderas: boot, lba
fuente
Puedes usar el
umask=000
modo:Fuente: wiki.linuxquestions.org , sección "Opciones de montaje para fat" en mount (8) .
fuente
Si la sintaxis es bash ...
fuente