Linux
使用 NOPASSWD 時 sudo 仍然要求輸入密碼
我閱讀了有關 serverfault 的所有 sudo 文章,但我仍然無法弄清楚我做錯了什麼。通常我終於找到了解決方案,但這次沒有:
我希望 apache 使用者能夠以使用者“hremotessh”的身份執行此命令:
sudo /home/hremotessh/scripts/redirect.sh 8892 8893
因此我在 visudo 中添加了這個:
apache ALL=(hremotessh) NOPASSWD: /home/hremotessh/scripts/redirect.sh
但 sudo 仍在詢問密碼?
sudo /home/hremotessh/scripts/redirect.sh [sudo] password for apache:
我試過這個,但不是更好:
sudo -u hremotessh /home/hremotessh/scripts/redirect.sh hremotessh is not in the sudoers file. This incident will be reported.
任何想法都會受到熱烈歡迎:-)
丹尼斯
除非您想以 root 身份執行命令,否則您需要指定使用者名,所以
su - apache -s /bin/bash sudo -u hremotessh /home/hremotessh/scripts/redirect.sh 8892 8893
是測試 sudo 命令的正確語法。
由於沒有提示您輸入 apache 使用者的密碼 sudo 似乎配置正確。
產生的警告:
hremotessh is not in the sudoers file.
表示sudo
在 redirect.sh 腳本中使用了另一個命令。並且該使用者沒有(有效的)sudo 策略。
嘗試從腳本執行 python3 程式碼作為 sudo 並且無法從腳本輸入密碼時,我遇到了類似的問題。解決方案是編輯 visudo 以便 python3 將作為 sudo 執行而不提示密碼,而不是將 python3 腳本作為 sudo 執行。因此,我相信您需要在不提示輸入密碼的情況下將 apache 作為 sudo 執行,而不是在沒有密碼的情況下將 .sh 腳本作為 sudo 執行。