Can't execute a script on a mounted external drive

23

6

The /mnt/ext is mounted to an ext2 filesystem, an external hard drive. For some reason I can't run scripts from there. Please see the session below.

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 $ 

I would love to find out why I see the error.

luntain

Posted 2010-01-23T15:20:51.653

Reputation: 351

Answers

22

Probably there was a noexec attribute set when the filesystem was mounted; maybe it is your distribution 'feature'.

To check it you can execute mount that will show mount options in parentheses, and to remove noexec flag you can use mount -o remount,exec /mnt/ext under root.

Also, make sure you place the exec option after the user option, or the system will still mount your drive as noexec.

whitequark

Posted 2010-01-23T15:20:51.653

Reputation: 14 146

3

A filesystem mounted noexec only prevents executing the script (i.e., asking the kernel to execute it appropriately based on a magic number or a shebang line). It doesn't prevent you from calling an interpreter on another filesystem mounted exec and passing the script as an argument (or on stdin) to said interpreter. Ergo, if not root, you could have worked around this with just sh k.sh.

pilona

Posted 2010-01-23T15:20:51.653

Reputation: 1 173

3

The file system is mounted with the noexec option.

President James Moveon Polk

Posted 2010-01-23T15:20:51.653

Reputation: 187