Acesta este un complex destul de intrebare legate de Sudoers file și comanda sudo, în general.
NOTĂ: am făcut aceste schimbări de pe o mașină dedicată rulează Desktop Ubuntu 13.04, pe care îl folosesc doar pentru scopuri educaționale. Am înțeles's un mare risc de securitate pentru a permite NOPASSWD sudo.
Inițial, mi schimba doar la sudoers fișier (/etc/sudoers) a fost o linie, un utilizator caietul de sarcini care ar trebui să aibă activat 'nicholsonjf' pentru a rula toate comenzile cu sudo fără a fi nevoie să introduceți o parolă (a se vedea linia care începe cu 'nicholsonjf'):
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
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
nicholsonjf ALL=NOPASSWD: ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
Cu toate acestea, acest lucru nu au de lucru, și am fost încă vi se solicită parola de fiecare dată când am făcut o comandă ca 'nicholsonjf'. Am fost doar posibilitatea de a începe să ruleze comenzi sudo ca 'nicholsonjf' odată ce am eliminat 'nicholsonjf' de la sudo și administrare grupuri.
Poate cineva explica de ce aceasta a lucrat?
Este pentru utilizator 'nicholsonjf' a fost moștenirea sudo drepturile de două grup caietul de 'admin' si 'sudo' (se vede mai jos în sudoers fișier), care au fost imperative 'nicholsonjf' specificație de utilizare, deoarece acestea au fost de mai jos în fișierul de configurare?
Linia adăugată a fost anulat. Din om sudoers
:
atunci Când mai multe intrări de meci pentru un utilizator, ele sunt aplicate în ordine. În cazul în care există mai multe meciuri, ultimul meci este folosit (care nu este neapărat cel mai specifice meci).
În cazul tău nicholsonjf
a fost un membru al grupului "sudo" așa că pentru el această linie aplicate:
%sudo ALL=(ALL:ALL) ALL
Dacă doriți să suprascrieți intrări în/etc/sudoers` pune intrări noi după ei.
Noua intrare ar trebui să arate ca
myuser ALL=(ALL) NOPASSWD: ALL
pentru un singur utilizator, sau
%sudo ALL=(ALL) NOPASSWD: ALL
pentru un grup.
Pentru un singur utilizator, adăugați această linie la sfarsit de sudoers
fișier folosind sudo visudo`
superuser ALL=(ALL) NOPASSWD: ALL
Pentru un grup
%supergroup ALL=(ALL) NOPASSWD: ALL
Pentru a nu solicita utilizatorului curent pentru o parolă în momentul în care utilizatorul folosește "sudo" face
echo "$USER ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/dont-prompt-$USER-for-password
acest lucru va crea un fișier numit/etc/sudoers.d/nu-prompt-
Avantajele de a face în acest fel peste adăugarea liniei în echo
comanda /etc/sudoers "folosind" sudo visudo
(cum a sugerat de către alte răspunsuri) sunt
/etc/sudoers
este uneori modificată prin actualizări de sistem, întrucât fișiere în/etc/sudoers.d` nu'tsudo visudo
metoda este predispus la eroare (după cum reiese din această întrebare), întrucât copiere/lipire o comandă este mult mai greu să te puiPotrivit sudo cat /etc/sudoers.d/README
această caracteristică (de a pune suplimentar sudoer fișiere în/etc/sudoers.d`) a fost activată în mod implicit, deoarece Debian 1.7.2p1-1, care a venit la sfârșitul anilor 1990's]2 (Ubuntu este bazat pe Debian).
Ca Vince a menționat într-un comentariu, puteți utiliza această linie:
%sudo ALL=NOPASSWD: ALL
(Acest lucru este diferit de linii afișate în cele răspunde, și a rezolvat problema pentru mine.)