Ubuntu
當我在 /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”命令(以及我列出的其他命令)時不提示輸入密碼?
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
給定路徑之前添加路徑。