Linux

使用 NOPASSWD 時 sudo 仍然要求輸入密碼

  • November 19, 2018

我閱讀了有關 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 執行。

引用自:https://serverfault.com/questions/614128