Почему мне предлагается ввести пароль sudo, когда я указал «NOPASSWD» в файле /etc/sudoers?

Почему мне предлагается ввести пароль sudo, когда я указал «NOPASSWD» в файле /etc/sudoers?

Я использую 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вместо указанной. В частности, $PATHseen sudoуказан в вашем sudoersфайле:

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

Попробуйте использовать sudo -Eдля сохранения своей среды или используйте полный путь для ruby, или добавьте пути к secure_path, перед указанными.

Связанный контент