这是一个奇怪的问题,它只发生在一台服务器上(共享托管,因此我对配置和日志的访问权限有限),但我无法理解它。
我有一个运行某些应用程序部署的 shell 脚本。该文件有一个 +x 标志,但我无法通过简单地从 shell 调用其名称来运行它,我收到“访问被拒绝”错误。使用文件名作为参数调用 bash 就像一个魅力。它看起来像这样:
[someuser@someserver:~] $cat test.sh
echo "hooray!"
[someuser@someserver:~] $chmod +x test.sh
[someuser@someserver:~] $ls -l test.sh
-rwxrwxr-x 1 someuser someuser 14 Oct 8 11:27 test.sh
[someuser@someserver:~] $./test.sh
-bash: ./test.sh: Permission denied
[someuser@someserver:~] $bash test.sh
hooray!
在开头添加 a#!/bin/bash
没有帮助。我也从其他 shell 尝试过(默认是 bash,在 sh 中尝试过),同样的事情发生了。
这并不是什么大问题,但对我来说却很困惑。可能是什么原因?
答案1
我认为这是因为脚本所在文件夹的“noexec”挂载选项。您可以尝试通过此命令进行检查
mount | grep `df -P /path/to/folder/with/script | tail -1 | cut -d ' ' -f 1`