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

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

我使用的是 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”命令(以及我列出的其他命令)時不會提示輸入密碼?

答案1

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

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

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

相關內容