
Ich verwende Ubuntu 14.04. Ich habe dies in meiner /etc/sudoers-Datei
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
Ich dachte, dass die Verwendung des obigen Befehls (der mit „NOPASSWD“) die Aufforderung zur Kennworteingabe verhindern würde. Nachdem ich mein System jedoch neu gestartet und mich als mein „Rails“-Benutzer angemeldet habe, werde ich beim Ausführen von „sudo“ immer noch nach einem Kennwort gefragt …
rails@mymachine:~$ sudo rake db:migrate
[sudo] password for rails:
rails@mymachine:~$ which rake
/usr/local/rvm/gems/ruby-2.3.0/bin/rake
Was muss ich tun, damit ich beim Ausführen des Befehls „rake“ (und anderer von mir aufgelisteter Befehle) nicht zur Eingabe eines Kennworts aufgefordert werde?
Antwort1
sudo
setzt Ihre Umgebung standardmäßig zurück, sodass Ihre nicht durchsucht wird $PATH
. Es könnte also versuchen, eine systemeigene Standardversion von auszuführen, ruby
anstatt der aufgelisteten. Insbesondere ist in Ihrer Datei das $PATH
Gesehene von angegeben:sudo
sudoers
secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Versuchen Sie, sudo -E
Ihre Umgebung beizubehalten, oder verwenden Sie den vollständig qualifizierten Pfadnamen für ruby
, oder fügen Sie die Pfade zu secure_path
vor den angegebenen hinzu.