绑定运行时 Bash 脚本权限被拒绝

Joe*_*ics 4 permissions command-line bash scripts

我无法运行我的 Bash 脚本,执行权限始终被拒绝。

我用命令修改了我的文件,例如:

chmod u+x bash_script1.sh 
Run Code Online (Sandbox Code Playgroud)

并获得以下结果:

-rwxr--r-- 1 user group 1947 Jun 18 16:04 bash_script1.sh
-rwxr--r-- 1 user group 2430 Jun 18 15:59 bash_script2.sh
-rw-r--r-- 1 user group    1 Jun 18 10:57 runs.txt
Run Code Online (Sandbox Code Playgroud)

但是,从命令行运行时,我继续收到以下错误:

命令:

./bash_script1.sh
Run Code Online (Sandbox Code Playgroud)

错误:

-sh: ./bash_script1.sh: Permission denied
Run Code Online (Sandbox Code Playgroud)

当我运行下面的命令时,我没有收到错误,但我不想使用 bash 来运行我的脚本:

bash bash_script1.sh
Run Code Online (Sandbox Code Playgroud)

#!/usr/bin/env bash被放置在我的标题中。

ste*_*ver 8

正如我们从 的输出中看到的findmnt -T .,存储脚本的文件系统是使用该noexec选项挂载的。这可以防止脚本(以及二进制可执行文件)直接执行,但bash bash_script1.sh仍然可以工作,因为bash可执行文件存储在其他地方并且只需要读取脚本。

要临时修改行为,您可以使用以下mount命令:

sudo mount -o remount,exec /home
Run Code Online (Sandbox Code Playgroud)

为了使更改持久,您需要修改/etc/fstab文件并删除noexec此块设备的挂载选项。