Impossibile eseguire uno script su un'unità esterna montata


23

/ Mnt / ext è montato su un filesystem ext2, un disco rigido esterno. Per qualche motivo non posso eseguire script da lì. Si prega di consultare la sessione di seguito.

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 $ 

Mi piacerebbe scoprire perché vedo l'errore.

Risposte:


22

Probabilmente c'era un noexecset di attributi quando era montato il filesystem; forse è la 'caratteristica' della tua distribuzione.

Per verificarlo puoi eseguire mountquello mostrerà le opzioni di mount tra parentesi e per rimuovere il noexecflag puoi usare mount -o remount,exec /mnt/extsotto root.

Inoltre, assicurati di posizionare l'opzione exec dopo l'opzione utente, altrimenti il ​​sistema monterà comunque l'unità come noexec.



3

Un filesystem montato noexecimpedisce solo l'esecuzione dello script (cioè, chiedendo al kernel di eseguirlo in modo appropriato sulla base di un numero magico o di una linea shebang). Non ti impedisce di chiamare un interprete su un altro filesystem montato exece passare lo script come argomento (o su stdin) a detto interprete. Ergo, se non root, avresti potuto aggirare questo con solo sh k.sh.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.