/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
。