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被放置在我的标题中。
正如我们从 的输出中看到的findmnt -T .,存储脚本的文件系统是使用该noexec选项挂载的。这可以防止脚本(以及二进制可执行文件)直接执行,但bash bash_script1.sh仍然可以工作,因为bash可执行文件存储在其他地方并且只需要读取脚本。
要临时修改行为,您可以使用以下mount命令:
sudo mount -o remount,exec /home
Run Code Online (Sandbox Code Playgroud)
为了使更改持久,您需要修改/etc/fstab文件并删除noexec此块设备的挂载选项。