+x フラグにもかかわらずシェル スクリプトの権限が拒否されました

+x フラグにもかかわらずシェル スクリプトの権限が拒否されました

これは奇妙なもので、1 つのサーバー (共有ホスティングなので、構成とログへのアクセスが制限されています) でのみ発生しますが、理解できません。

あるアプリのデプロイメントを実行するシェル スクリプトがあります。ファイルには +x フラグがありますが、シェルからその名前を呼び出すだけでは実行できず、「アクセスが拒否されました」というエラーが発生します。ファイル名を引数として 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!

#!/bin/bash先頭にa を追加しても効果はありません。他のシェル (デフォルトは bash、sh で試しました) からも試しましたが、同じことが起こりました。

これはそれほど大きな問題ではありませんが、私には不可解です。原因は何でしょうか?

答え1

スクリプトが入っているフォルダのマウントオプションが「noexec」になっているのが原因だと思います。次のコマンドで確認してみてください。

mount | grep `df -P /path/to/folder/with/script | tail -1 | cut -d ' ' -f 1`

関連情報