Comment puis-je exécuter un fichier depuis un lecteur USB FAT?

9

J'essaie d'installer une application portable sur ma clé USB afin qu'elle soit compatible avec Ubuntu et Windows (en particulier, un programme appelé eToys). Le support est déjà intégré dans l'application pour les deux systèmes d'exploitation - il y a etoys.sh pour Ubuntu et etoys.exe pour Windows. J'ai décidé de l'installer sur un lecteur FAT car cela peut être lu à partir des deux systèmes. Cela fonctionne très bien pour Windows, mais pour une raison quelconque, je ne peux pas exécuter etoys.sh sur Ubuntu.

Le problème ne vient pas du fichier - lorsque l’ensemble du dossier est copié sur le disque dur local, l’application fonctionne parfaitement dans Ubuntu. Mais lorsque j'essaie de l'exécuter depuis l'USB, il ouvre le fichier dans un éditeur de texte.

J'ai ensuite essayé de l'exécuter depuis un terminal, mais j'ai reçu le message Autorisation refusée.

J'ai eu le même problème avec d'autres exécutables.

Existe-t-il un moyen simple d’exécuter des choses à partir d’une clé USB?

    
posée Derek Redfern 25.01.2011 - 01:22
la source

8 réponses

7

J'ai trouvé une excellente solution à lien qui a résolu le problème.

En gros, il est dit d’exécuter la commande

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

et cela empêchera les disques de s’auto-monter avec l’option showexec.

Je n'aime pas répondre à ma propre question, mais cela a fonctionné pour moi et j'espère que cela aidera aussi les autres.

pour Ubuntu 18.04:

sudo sed -i -e 's|showexec|\x00\x00\x00\x00\x00\x00\x00\x00|g' /usr/lib/udisks2/udisksd
    
réponse donnée Derek Redfern 02.02.2011 - 05:09
la source
19

En raison des limitations du système de fichiers FA32, vous ne pouvez pas.

Maintenant, vous pouvez tricher:

  1. appelez sh etoys.sh au lieu de ./etoys.sh
  2. si vous le souhaitez, vous pouvez même créer un autre script (par exemple, sur votre disque dur) qui appelle simplement votre script sur le lecteur USB:

    #!/bin/bash
    sh /media/USB/etoys.sh
    
réponse donnée user9521 25.01.2011 - 01:29
la source
8

Le montage de l'appareil avec -o mode=<value> devrait fonctionner

mode=value

Définissez le mode de tous les fichiers sur value & amp; 0777 ne tient pas compte des autorisations d'origine. Ajoutez une autorisation de recherche aux répertoires disposant d'une autorisation de lecture. La valeur est donnée en octal.

    
réponse donnée Bonsi Scott 25.01.2011 - 06:20
la source
2

En fin de compte, le problème semble être que udisks monte le système de fichiers avec l'option showexec , empêchant tout fichier ne se terminant pas par .exe , .bat ou .com d'être exécuté.

Une question connexe (comment donner des options de montage personnalisées aux udisks) peut être trouvée ici: Comment configurer pour enregistrer des données sur une clé USB instantanément? Il s'avère que vous pouvez utiliser la configuration udev pour cela.

La définition des options de montage par défaut pour les udisks n'est pas vraiment possible? propose une autre solution basée sur udisks-glue , mais elle semble moins convaincante, car elle repose finalement sur udisks , de sorte qu'il semble que vous pouvez ajouter des options, mais pas les supprimer, et en particulier showexec est toujours là).

Quoi qu’il en soit, j’ai tendance à préférer cela au patch d’un fichier binaire.

    
réponse donnée Virgile 15.02.2013 - 14:50
la source
2

Aucune des solutions présentées n’a fonctionné pour autant que je puisse dire qu’un programme que j’avais écrit en tant que programme de terminal Linux s'exécutait dans ma partition FAT32, mais changer le nom de fichier du programme pour inclure l’extension .exe fonctionnait (merci pour le conseil), tout ce que j'ai fait était de renommer le nom de fichier en filename.exe pour le programme terminal que j'essayais d'exécuter sur une partition FAT32, puis de le désinstaller, de le remonter et de définir les permissions du disque pour permettre l'exécution, à filename.exe et définir ses autorisations, puis la coche coller plutôt que de revenir à un moins, et quand je définir le chemin et entré ./filename.exe à l'invite du terminal, le programme a fonctionné comme il se doit et montre la commande ligne contenant filename.exe comme entrée, bien que le répertoire de fichiers Ubuntu affiche le fichier sous MSDOS / Windows, il est exécuté en tant que programme Linux.

    
réponse donnée Dan Hudgins 04.07.2013 - 05:37
la source
1

J'ai donc trouvé une solution beaucoup plus simple (et plus sûre).

Utilisez gparted pour formater l’USB FAT32, puis utilisez-nous Partition = & gt; Manage Flags pour définir les options suivantes: boot, lba

    
réponse donnée MrSteve 07.08.2013 - 22:28
la source
0

Vous pouvez utiliser le mode umask=000 :

umount /dev/sdb1
mount -o umask=000 -t vfat /dev/sdb1 /media/sdb1

Source: wiki.linuxquestions.org , section "Options de montage pour fat" dans mount(8) .

    
réponse donnée pevik 22.11.2016 - 22:47
la source
-1

Si la syntaxe est bash ...

bash yourscript
    
réponse donnée Sergio Abreu 25.07.2018 - 15:51
la source

Lire d'autres questions sur les étiquettes