
Я использую 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
seen sudo
указан в вашем sudoers
файле:
secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Попробуйте использовать sudo -E
для сохранения своей среды или используйте полный путь для ruby
, или добавьте пути к secure_path
, перед указанными.