Wie führe ich eine Datei von einem FAT USB-Laufwerk aus?

9

Ich versuche eine portable App auf meinem USB-Laufwerk zu installieren, so dass sie sowohl mit Ubuntu als auch mit Windows kompatibel ist (speziell mit einem Programm namens eToys). Für beide Betriebssysteme ist Support bereits in der App integriert - es gibt etoys.sh für Ubuntu und etoys.exe für Windows. Ich entschied mich, auf ein FAT-Laufwerk zu installieren, da das von beiden Systemen gelesen werden kann. Das funktioniert gut für Windows, aber aus irgendeinem Grund kann ich etoys.sh unter Ubuntu nicht ausführen.

Das Problem ist nicht mit der Datei - wenn der ganze Ordner auf die lokale Festplatte kopiert wird, funktioniert die App in Ubuntu großartig. Aber wenn ich versuche, es vom USB auszuführen, öffnet es die Datei in einem Texteditor.

Ich habe dann versucht, es von einem Terminal auszuführen, aber ich habe die Nachricht Berechtigung verweigert.

Ich hatte das gleiche Problem mit anderen ausführbaren Dateien.

Gibt es eine einfache Möglichkeit, Dinge von einem USB-Stick auszuführen?

    
Derek Redfern 25.01.2011, 01:22

8 Antworten

7

Ich fand tatsächlich eine großartige Lösung im Link , mit der das Problem behoben wurde.

Grundsätzlich heißt es, den Befehl

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

und das verhindert, dass Festplatten automatisch mit der showexec-Option geladen werden.

Ich mag es nicht, meine eigene Frage zu beantworten, aber das hat für mich funktioniert und ich hoffe, es hilft auch anderen Menschen.

für ubuntu 18.04:

sudo sed -i -e 's|showexec|\x00\x00\x00\x00\x00\x00\x00\x00|g' /usr/lib/udisks2/udisksd
    
Derek Redfern 02.02.2011, 05:09
19

Wegen der Einschränkungen des FA32-Dateisystems können Sie nicht.

Jetzt können Sie betrügen:

  1. rufen Sie entweder sh etoys.sh anstelle von ./etoys.sh auf
  2. Wenn Sie möchten, können Sie sogar ein anderes Skript erstellen (das zum Beispiel auf Ihrer Festplatte liegen würde), das Ihr Skript einfach auf dem USB-Laufwerk aufruft:

    #!/bin/bash
    sh /media/USB/etoys.sh
    
user9521 25.01.2011 01:29
8

Das Gerät mit -o mode=<value> zu mounten sollte funktionieren

mode=value

Stellen Sie den Modus aller Dateien auf Wert & amp; 0777 ignoriert die ursprünglichen Berechtigungen. Fügen Sie Suchberechtigungen zu Verzeichnissen hinzu, die Leseberechtigung haben. Der Wert wird in Oktal angegeben.

    
Bonsi Scott 25.01.2011 06:20
2

Letztendlich scheint das Problem zu sein, dass udisks das Dateisystem mit der Option showexec mounted und verhindert, dass Dateien, die nicht in .exe , .bat oder .com enden, ausgeführt werden.

Eine verwandte Frage (wie benutzerdefinierte Mount-Optionen zu UDisks gegeben werden) finden Sie hier: Wie wird konfiguriert, um Daten sofort in Pendrive aufzuzeichnen? Es stellt sich heraus, dass Sie udev configuration dafür verwenden können.

Stellt die Standard-Mount-Optionen für UDisks wirklich nicht ein möglich? schlägt eine andere Lösung vor, die auf udisks-glue basiert, aber sie scheint weniger überzeugend zu sein, da sie letztlich auf udisks angewiesen ist, so dass Sie Optionen hinzufügen und nicht entfernen können, insbesondere showexec ist immer noch hier).

In jedem Fall bevorzuge ich das Patchen einer Binärdatei.

    
Virgile 15.02.2013 14:50
2

Keine der gezeigten Lösungen funktionierte so weit, wie ich sagen konnte, um ein Programm zu erhalten, das ich als Linux-Terminalprogramm auf meiner FAT32-Partition geschrieben hatte, aber das Ändern des Dateinamens des Programms mit .exe-Erweiterung funktionierte (Danke für der Tipp), alles, was ich getan habe, war Dateiname in filename.exe für das Terminal-Programm umbenennen ich habe versucht, auf einer FAT32-Partition auszuführen, und dann un-mount es, mounten es neu und legen Sie die Laufwerksberechtigungen, um die Ausführung zu erlauben, dann gehen zu filename.exe und setze seine Berechtigungen und dann das Häkchen würde haften, anstatt zurück zu einem Minus, und wenn ich den Pfad und eingegeben ./filename.exe an der Terminal-Eingabeaufforderung das Programm lief wie es sollte und zeigt den Befehl Zeile einschließlich Dateiname.exe wie eingegeben, obwohl das Ubuntu-Dateiverzeichnis die Datei als MSDOS / Windows zeigt, läuft es als Linux-Programm.

    
Dan Hudgins 04.07.2013 05:37
1

So fand ich eine viel einfachere (und sicherere Lösung).

Verwenden Sie gparted, um das USB FAT32 zu formatieren und dann Partition = & gt; Flags verwalten, um die folgenden Flags zu setzen: boot, lba

    
MrSteve 07.08.2013 22:28
0

Sie können umask=000 mode verwenden:

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

Quelle: wiki.linuxquestions.org , Abschnitt "Mount-Optionen für Fett" in mount(8) .

    
pevik 22.11.2016 22:47
-1

Wenn die Syntax Bash ist ...

bash yourscript
    
Sergio Abreu 25.07.2018 15:51

Tags und Links