Ich versuche, eine tragbare App so auf meinem USB-Laufwerk zu installieren, dass sie sowohl mit Ubuntu als auch mit Windows kompatibel ist (insbesondere mit einem Programm namens eToys). In die App ist bereits Unterstützung für beide Betriebssysteme integriert - etoys.sh
für Ubuntu und etoys.exe
Windows. Ich habe mich für die Installation auf einem FAT-Laufwerk entschieden, da dies von beiden Systemen gelesen werden kann. Dies funktioniert gut für Windows, aber aus irgendeinem Grund kann ich etoys.sh unter Ubuntu nicht ausführen.
Das Problem liegt nicht bei der Datei - wenn der gesamte Ordner auf die lokale Festplatte kopiert wird, funktioniert die App in Ubuntu hervorragend. Wenn ich jedoch versuche, es über USB auszuführen, wird die Datei in einem Texteditor geöffnet.
Ich habe dann versucht, es von einem Terminal aus auszuführen, aber ich habe die Meldung Berechtigung verweigert erhalten.
Ich hatte das gleiche Problem auch mit anderen ausführbaren Dateien.
Gibt es eine einfache Möglichkeit, Dinge von einem USB-Stick auszuführen?
quelle
Antworten:
Aufgrund der Einschränkungen des FA32-Dateisystems ist dies nicht möglich.
Jetzt kannst du schummeln:
sh etoys.sh
statt./etoys.sh
Wenn Sie möchten, können Sie sogar ein anderes Skript erstellen (das beispielsweise auf Ihrer Festplatte liegt), das Ihr Skript einfach auf dem USB-Laufwerk aufruft:
quelle
Die Montage des Geräts mit
-o mode=<value>
sollte funktionierenStellen Sie den Modus aller Dateien auf Wert ein und
0777
ignorieren Sie die ursprünglichen Berechtigungen. Fügen Sie Verzeichnisse mit Leseberechtigung hinzu. Der Wert wird in Oktal angegeben.quelle
mode=
Option für vfat, siehe mount (8) .Ich habe unter http://ubuntuforums.org/showthread.php?t=1665289 eine großartige Lösung gefunden , die das Problem behoben hat.
Grundsätzlich heißt es, den Befehl auszuführen
Dadurch wird verhindert, dass Festplatten mit der Option showexec automatisch gemountet werden.
Ich beantworte meine eigene Frage nicht gerne, aber das hat bei mir funktioniert und ich hoffe, es hilft auch anderen Menschen.
für Ubuntu 18.04:
quelle
Letztlich scheint das Problem zu sein , dass
udisks
Halterungen das Dateisystem mit dershowexec
Option, eine Datei zu verhindern, die nicht in enden.exe
,.bat
oder.com
ausgeführt werden.Eine verwandte Frage (wie man udisks benutzerdefinierte Mount-Optionen gibt) finden Sie hier: Wie konfiguriere ich das Aufzeichnen von Daten, um sie sofort anzuhalten? Es stellt sich heraus, dass Sie dazu die
udev
Konfiguration verwenden können.Ist das Festlegen der Standard-Mount-Optionen für udisks wirklich nicht möglich? schlägt eine andere Lösung vor, die auf basiert
udisks-glue
, aber weniger überzeugend erscheint, da sie letztendlich darauf beruhtudisks
, dass Sie anscheinend Optionen hinzufügen, aber nicht entfernen können und insbesondereshowexec
immer noch vorhanden sind).In jedem Fall ziehe ich das dem Patchen einer Binärdatei vor.
quelle
Keine der gezeigten Lösungen funktionierte, soweit ich feststellen konnte, dass ein Programm, das ich als Linux-Terminalprogramm geschrieben hatte, in meiner FAT32-Partition ausgeführt werden konnte, aber das Ändern des Dateinamens des Programms in die Erweiterung .exe funktionierte (danke für den Tipp). Alles, was ich getan habe, war, den Dateinamen in Dateiname.exe für das Terminalprogramm umzubenennen, das ich auf einer FAT32-Partition ausführen wollte, und dann die Bereitstellung aufzuheben, erneut bereitzustellen und die Festplattenberechtigungen festzulegen, um die Ausführung zu ermöglichen, und dann zu Dateiname zu wechseln. exe und setze seine Berechtigungen und dann würde das Häkchen bleiben, anstatt zu einem Minus zurückzukehren, und als ich den Pfad festlegte und an der Terminal-Eingabeaufforderung ./filename.exe eingab, lief das Programm wie es sollte und zeigt die Befehlszeile einschließlich Dateiname an .exe wie eingegeben, obwohl das Ubuntu-Dateiverzeichnis die Datei als MSDOS / Windows anzeigt, wird sie als Linux-Programm ausgeführt.
quelle
Also fand ich eine viel einfachere (und sicherere) Lösung.
Verwenden Sie gparted, um das USB FAT32 zu formatieren, und verwenden Sie dann Partition => Flags verwalten, um die folgenden Flags zu setzen: boot, lba
quelle
Sie können den
umask=000
Modus verwenden:Quelle: wiki.linuxquestions.org , Abschnitt "Mount-Optionen für Fett" in Mount (8) .
quelle
Wenn die Syntax bash ist ...
quelle