
我使用的是 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
所看到的:sudo
sudoers
secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
嘗試使用sudo -E
來保留您的環境或使用 的完全限定路徑名,或在給定的路徑之前ruby
添加到 , 的路徑。secure_path