Anwendung aus einem Script heraus aufrufen - vom Pfad abhängig?
-
Grundeinführung: Mein Linux-System habe ich so eingerichtet, dass automatisch meine Windows-Partition bei Systemstart gemountet wird. Für Windows möchte ich ein paar Sachen erledigen, was aber mit C++ und für diesen Anwendungszweck eine kleine Qual ist, weshalb ich die Vorarbeit mit einem Skript und einem Perl-Interpreter mache. Für die Verarbeitung der Liste, die das Skript erstellt, will ich eine selbstgeschriebene Anwendung starten (
exec
), der ich die vom Skript erstellte Liste als Parameter übergebe - soweit noch nichts dramatisches.Die Anwendung (eher eine kleine Bibliothek) liegt auf der Windows-Partition, genau wie die Sources. Kompiliere ich nun meine Anwendung (ganz kleiner Befehl:
g++ HalloWelt.c -o HalloWelt.bin
) und versuche, diese auszuführen, spricht mir die Konsole mit der Meldung ab:bash: ./HalloWelt.bin: Keine Berechtigung
, was formvollendeter Schwachsinn ist. Da ich auf einer eingebundenen NTFS-Festplatte kompiliere und die nun mal keine UNIX-Rechteverwaltung kennen, sind alle Dateien von root und haben sämltliche Rechte (auch für Others, nur nicht anfangen zu träumen). Aber auch als root kann ich diese Datei aufgrund fehlender Berechtigung nicht ausführen.
Die Anwendung sieht gut aus, hat keine Fehler oder Ähnliches, und wenn man die Datei öffnet, sieht man Binärsoße, zusammen mit 'ELF' am Anfang - es wurde also kompiliert. Spaßeshalber habe ich die Datei dann einmal in mein Home-Verzeichnis (von Windows-Platte nach Linux-Platte) kopiert und ausgeführt - und anstatt dass ich die Meldung kriege, dass ich keine Berechtigung hätte, erhalte ich die Meldung, dass ich keine Parameter übergeben hätte und die Anwendung daher beendet wird - meine Fehlermeldung. Unter /home kann ich den Käse also ausführen, nicht auf meiner gemounteten Platte. Das mit dem Skript habe ich auch getestet - und wenn ich /home statt ./ angebe, funktioniert es auch.
An sich kein Problem vorhanden, aber die Frage "Warum?" drängt sich mir doch auf. Als root hätte das System gar nicht meckern dürfen - was übersehe ich hier?
-
_wie_ hast du gemountet?
-
Der aus dem Westen... schrieb:
Als root hätte das System gar nicht meckern dürfen - was übersehe ich hier?
Ein Programm ohne guten Grund als root ausführen, das ist bei Linux normalerweise eine ganz schlechte Idee. Das würde ich mir abgewöhnen.
Davon mal abgesehen ist dein Fehler möglicherweise darauf zurückzuführen, dass du die NTFS-Partition mit der Mount-Option noexec gemountet hast. Ich würde aber eher davon abraten mit executables auf einer NTFS-Partition zu arbeiten. Wie du schon gemerkt hast, kann NTFS die Linux-Rechte nicht abbilden, deswegen sind Fehler und Probleme vorprogrammiert.
-
*Kopfgegendiewand* noexec ...
Einen guten Grund hatte ich. Mein Ausbilder sagt: "Du musst testen!", Cheffe sagt: "Ihr müsst testen, Haare (ich) testet, das müsst ihr auch machen!". Vor jedem Import lasse ich auf einem lokalen MySQL-Server einen Probedurchlauf machen ...
noexec - ihr dürft mich erschießen.
-
Christoph schrieb:
[...] deswegen sind Fehler und Probleme vorprogrammiert.
http://www.deutschesprache-schweresprache.de/vorprogrammiert
Der Hinweis nur, weil wir hier ja in einem Programmiererforum sind, bei 'normalen' Menschen habe ich diesbezüglich schon jede Hoffnung aufgegeben.
-
Es bezeichnet dich als Programmierer, dass du schamlos in der Lage bist, ein an sich abgeschlossenes Thema mit dieser Lektion aufzufüllen. Und es bezeichnet mich als Programmierer, dass ich es akzeptiere.