Ubuntu

當我在 /etc/sudoers 文件中指定“NOPASSWD”時,為什麼提示我輸入 sudo 密碼?

  • November 4, 2016

我正在使用 Ubuntu 14.04。我的 /etc/sudoers 文件中有這個

Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
%deployers ALL=(ALL) ALL

rails ALL = NOPASSWD: /usr/local/rvm/gems/ruby-2.3.0/bin/bundle, /usr/local/rvm/rubies/ruby-2.3.0/bin/ruby, /usr/local/rvm/gems/ruby-2.3.0/bin/rake, /usr/bin/service, /sbin/   restart

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

我認為包括上述命令(帶有“NOPASSWD”的命令)可以防止提示輸入密碼,但是在我重新啟動系統並以“rails”使用者身份登錄後,請注意在執行 sudo 時我仍然被要求輸入密碼…

rails@mymachine:~$ sudo rake db:migrate
[sudo] password for rails: 
rails@mymachine:~$ which rake
/usr/local/rvm/gems/ruby-2.3.0/bin/rake

我需要做什麼才能在執行“rake”命令(以及我列出的其他命令)時不提示輸入密碼?

sudo預設情況下會重置您的環境,因此它不會搜尋您的$PATH. 因此,它可能會嘗試執行系統預設版本ruby而不是列出的版本。特別是在您的文件中給出了$PATH所見:sudo``sudoers

secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

嘗試使用sudo -E來保留您的環境或使用完全限定的路徑名ruby,或在secure_path給定路徑之前添加路徑。

引用自:https://unix.stackexchange.com/questions/321160