這是一個奇怪的問題,它只發生在一台伺服器上(共享託管,因此我對配置和日誌的存取權限有限),但我無法理解它。
我有一個運行某些應用程式部署的 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`