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.

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.



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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.