Tai gana sudėtingas klausimas, susijęs su "Sudoers" failu ir komanda sudo apskritai.
PASTABA: Šiuos pakeitimus atlikau specialiame kompiuteryje su "Ubuntu Desktop 13.04", kurį naudoju tik mokymosi tikslais. Suprantu, kad įjungti NOPASSWD sudo yra didžiulė saugumo rizika.
Iš pradžių vienintelis mano atliktas sudoers failo (/etc/sudoers) pakeitimas buvo viena eilutė, vartotojo specifikacija, kuri turėjo įgalinti 'nicholsonjf' vykdyti visas komandas su sudo neįvedant slaptažodžio (žr. eilutę, prasidedančią '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
Tačiau tai nepadėjo, ir kiekvieną kartą, kai paleisdavau komandą kaip 'nicholsonjf', manęs vis tiek prašydavo pateikti slaptažodį. Galėjau pradėti vykdyti sudo komandas kaip 'nicholsonjf' tik tada, kai pašalinau 'nicholsonjf' iš sudo ir admin grupių.
Ar kas nors gali paaiškinti, kodėl tai pavyko?
Ar dėl to, kad naudotojas 'nicholsonjf' paveldėjo sudo teises iš dviejų grupių specifikacijų 'admin' ir 'sudo' (žr. toliau sudoers faile), kurios buvo viršesnės už 'nicholsonjf' naudotojo specifikaciją, nes buvo toliau konfigūracijos faile?
Jūsų pridėta eilutė buvo panaikinta. Iš man sudoers
:
Kai naudotojui sutampa keli įrašai, jie taikomi eilės tvarka. Jei yra kelios atitiktys, naudojama paskutinė atitiktis (kuri nebūtinai yra specifiškiausia).
Jūsų atveju nicholsonjf
buvo sudo
grupės narys, todėl jam taikoma ši eilutė:
%sudo ALL=(ALL:ALL) ALL
Jei norite pakeisti /etc/sudoers
įrašus, tiesiog įrašykite naujus įrašus po jų.
Naujas įrašas turėtų atrodyti taip
myuser ALL=(ALL) NOPASSWD: ALL
vienam naudotojui, arba
%sudo ALL=(ALL) NOPASSWD: ALL
- grupei.
Vieno vartotojo atveju, naudodami sudo visudo
, sudo visudo
įrašykite šią eilutę sudoers
failo pabaigoje
superuser ALL=(ALL) NOPASSWD: ALL
Grupei
%supergroup ALL=(ALL) NOPASSWD: ALL
Kaip Vince minėjo komentare, galite naudoti šią eilutę:
%sudo ALL=NOPASSWD: ALL
(Tai skiriasi nuo eilučių, parodytų tų atsakymuose, ir man išsprendė problemą.)