无法在已安装的外部驱动器上执行脚本

无法在已安装的外部驱动器上执行脚本

/mnt/ext 已安装到 ext2 文件系统(外部硬盘)。出于某种原因,我无法从那里运行脚本。请参阅下面的会话。

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 $ 

我很想知道为什么会出现这个错误。

答案1

可能noexec在挂载文件系统时设置了一个属性;也许这是您的发行版“功能”。

要检查它,您可以执行mount将在括号中显示挂载选项的命令,并删除您可以在 root 下noexec使用的标志。mount -o remount,exec /mnt/ext

另外,请确保将 exec 选项放在 user 选项之后,否则系统仍会将您的驱动器安装为 noexec。

答案2

文件系统使用 noexec 选项挂载。

答案3

挂载的文件系统noexec只会阻止执行脚本(即要求内核根据魔法数字或 shebang 行适当地执行脚本)。它不会阻止您调用挂载的另一个文件系统上的解释器exec并将脚本作为参数(或在 stdin 上)传递给该解释器。因此,如果不是 root,您只需使用 即可解决这个问题sh k.sh

相关内容