Ein Skript kann auf einem bereitgestellten externen Laufwerk nicht ausgeführt werden

23

Das / mnt / ext wird in ein ext2-Dateisystem eingebunden, eine externe Festplatte. Aus irgendeinem Grund kann ich dort keine Skripte ausführen. Bitte beachten Sie die Sitzung unten.

luntain@plato /mnt/ext $ echo "echo success" > k.sh
luntain@plato /mnt/ext $ chmod 777 k.sh
luntain@plato /mnt/ext $ ./k.sh
-bash: ./k.sh: Permission denied
126luntain@plato /mnt/ext $ ll k.sh
-rwxrwxrwx 1 luntain luntain 13 Jan 23 15:08 k.sh*
luntain@plato /mnt/ext $ 

Ich würde gerne herausfinden, warum ich den Fehler sehe.

luntain
quelle

Antworten:

22

Wahrscheinlich war noexecbeim Einhängen des Dateisystems ein Attribut festgelegt. Vielleicht liegt es an Ihrer Distributionsfunktion.

Um dies zu überprüfen, können Sie ausführen, mountdass die Mount-Optionen in Klammern angezeigt werden, und um das noexecFlag zu entfernen, das Sie mount -o remount,exec /mnt/extunter root verwenden können.

Stellen Sie außerdem sicher, dass Sie die Option exec nach der Benutzeroption einfügen, da sonst das System Ihr Laufwerk weiterhin als noexec mounten kann.

Whitequark
quelle
3

Das Dateisystem wird mit der Option noexec angehängt.

James Reinstate Monica Polk
quelle
3

Ein eingehängtes Dateisystem noexecverhindert nur die Ausführung des Skripts (dh das Auffordern des Kernels, es auf der Grundlage einer magischen Zahl oder einer Shebang-Zeile entsprechend auszuführen). Es hindert Sie nicht daran, einen Interpreter auf einem anderen gemounteten Dateisystem aufzurufen execund das Skript als Argument (oder auf stdin) an diesen Interpreter zu übergeben. Ergo, wenn nicht root, hätten Sie das einfach umgehen können sh k.sh.

pilona
quelle