Nie można wykonać skryptu na zamontowanym dysku zewnętrznym


23

/ Mnt / ext jest zamontowany w systemie plików ext2, zewnętrznym dysku twardym. Z jakiegoś powodu nie mogę uruchomić skryptów z tego miejsca. Zobacz sesję poniżej.

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 $ 

Chciałbym dowiedzieć się, dlaczego widzę błąd.

Odpowiedzi:


22

Prawdopodobnie podczas noexecmontowania systemu plików ustawiono atrybut; może jest to „funkcja” Twojej dystrybucji.

Aby to sprawdzić, możesz wykonać mount, które pokażą opcje montowania w nawiasach, i usunąć noexecflagę, której możesz użyć mount -o remount,exec /mnt/extw katalogu głównym.

Upewnij się również, że umieściłeś opcję exec po opcji użytkownika, w przeciwnym razie system nadal będzie montował dysk jako noexec.



3

Zainstalowany system plików noexecuniemożliwia jedynie wykonanie skryptu (tj. Proszenie jądra o wykonanie go odpowiednio na podstawie magicznej liczby lub linii shebang). Nie przeszkadza to w wywołaniu interpretera na innym zamontowanym systemie plików execi przekazaniu skryptu jako argumentu (lub standardowego wejścia) do tego interpretera. Ergo, jeśli nie root, mógłbyś obejść to za pomocą just sh k.sh.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.