/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によって見られる は、ファイルsudoで指定されていますsudoers

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

sudo -E環境を保持するには を使用してみてください。または、 の完全修飾パス名を使用するか、指定されたパスの前にrubyへのパスを追加してください。secure_path

関連情報