我使用的是 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