Ich habe Debian in VirtualBox installiert (für verschiedene Experimente, die normalerweise mein System kaputt machten) und versucht, das VirtualBox-Gast-Addon-Skript zu starten. Ich habe mich als root angemeldet und versucht zu starten autorun.sh
, habe aber die Meldung «Erlaubnis verweigert» erhalten. ls -l
zeigt an, dass das Skript über ausführbare Rechte verfügt.
Leider kann ich die Ausgabe nicht kopieren - VirtualBox hat ohne das Addon absolut keinen Sinn, da weder ein freigegebenes Verzeichnis noch eine freigegebene Zwischenablage funktionieren. Aber damit Sie sicher sind, habe ich die Rechte von Hand kopiert:
#ls -l ./autorun.sh
-r-xr-xr-x 1 root root 6966 Mar 26 13:56 ./autorun.sh
Zuerst dachte ich, dass es sein könnte, dass das Skript etwas ausführt, das den Fehler verursacht hat. Ich habe versucht, durch so /bin/sh
etwas zu ersetzen #/pathtorealsh/sh -xv
, aber ich habe keine Ausgabe bekommen - es scheint, dass das Skript nicht einmal ausgeführt werden kann.
Ich habe nicht einmal eine Idee, woran es liegen könnte.
quelle
mount | grep noexec
?noexec
Set. Wahrscheinlich können Sie es als Antwort posten; In der Zwischenzeit versuche ich, es mit Exec-Rechten wieder einzubauen. Hm, ich wusste nicht einmal, dass das Dateisystem ein solches Attribut haben könnte.sh ./autorun.sh
was passiert dann?Antworten:
Möglicherweise ist Ihr Dateisystem mit festgelegten
noexec
Optionen aktiviert, sodass Sie keine ausführbaren Dateien ausführen können. Aus der Mount- Dokumentation:Versuchen:
Überprüfen Sie anschließend, ob Ihr Dateisystem in der Ausgabe aufgeführt ist.
Wenn ja, können Sie dieses Problem lösen, indem Sie das Dateisystem mit neu laden
exec
Option :quelle
noexec
: "sh: 75: script.sh: Erlaubnis verweigert"bash -x ./filename.filetype
sollte arbeiten. Es hat bei mir funktioniert, als mir als Root-Benutzer die Erlaubnis verweigert wurde.quelle
noexec
Mount-Option ist, funktioniert dies nicht, da möglicherweise mehr Dateien ausgeführt werden müssen. Das heißt, diefilename.filetype
würden nach Luft schnappen, wenn sie versuchen würden, andere Dateien aus demselben Dateisystem auszuführen. Sie können dies einfach mit einem vereinfachten Test überprüfen: Erstellen Sie ein zweizeiliges Skript, das "Hallo" ausgibt und sich dann erneut aufruft, aber keine ausführbaren Rechte festlegt. Wenn Sie es mit ausführen-x
, würde es "Hallo" ausgeben, aber dann würde die rekursive Aufrufzeile einen Fehler auslösen.Meine Lösung für dieses Problem ist die Verwendung von Source . Ich befand mich auf einem Speichervolumen mit sehr wichtigen Daten. Dieses Volume ist als noexec gemountet. Ich habe ein einfaches Shell-Skript, das ausführbar ist, aber ein Berechtigungsproblem hat.
Nur auf meinem Ubuntu getestet.
quelle