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


23

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

我很想知道为什么我会看到这个错误。

Answers:


22

可能有一个 noexec 安装文件系统时设置的属性;也许这是你的发行版“功能”。

要检查它,您可以执行 mount 这将在括号中显示挂载选项,并删除 noexec 你可以使用的旗帜 mount -o remount,exec /mnt/ext 在根下。

此外,请确保在用户选项后面放置exec选项,否则系统仍会将驱动器安装为noexec。



3

已安装文件系统 noexec 仅阻止执行脚本(即,要求内核基于幻数或shebang线适当地执行它)。它不会阻止您在安装的另一个文件系统上调用解释器 exec 并将脚本作为参数(或在stdin上)传递给所述解释器。因此,如果不是root,你可以解决这个问题 sh k.sh

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.