Šis ir diezgan sarežģīts jautājums, kas saistīts ar Sudoers failu un sudo komandu kopumā.
PIEZĪME: Es esmu veicis šīs izmaiņas īpašā datorā ar operētājsistēmu Ubuntu Desktop 13.04, ko izmantoju tikai mācību nolūkos. Es saprotu, ka NOPASSWD sudo ieslēgšana ir liels drošības risks.
Sākotnēji manas vienīgās izmaiņas sudoers failā (/etc/sudoers) bija viena rindiņa, lietotāja specifikācija, kurai bija jāļauj 'nicholsonjf' izpildīt visas komandas ar sudo, neievadot paroli (skat. rindiņu, kas sākas ar '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
Tomēr tas nedarbojās, un katru reizi, kad palaidīšu komandu kā 'nicholsonjf', man joprojām tika pieprasīta parole. Es varēju sākt izpildīt sudo komandas kā 'nicholsonjf' tikai pēc tam, kad no sudo un admin grupām izņēmu 'nicholsonjf'.
Vai kāds var paskaidrot, kāpēc tas izdevās?
Vai tas ir tāpēc, ka lietotājs 'nicholsonjf' mantoja sudo tiesības no divām grupām 'admin' un 'sudo' (redzams zemāk sudoers failā), kas bija svarīgākas par 'nicholsonjf' lietotāja specifikāciju, jo tās bija tālāk konfigurācijas failā?
Jūsu pievienotā rinda tika pārrakstīta. No man sudoers
:
Ja lietotājam atbilst vairāki ieraksti, tie tiek piemēroti secībā. Ja ir vairākas sakritības, tiek izmantota pēdējā sakritība (kas ne vienmēr ir visprecīzākā sakritība).
Jūsu gadījumā nicholsonjf
bija grupas sudo
dalībnieks, tāpēc viņam tika piemērota šī rinda:
%sudo ALL=(ALL:ALL) ALL
Ja vēlaties aizstāt ierakstus /etc/sudoers
, vienkārši ievietojiet jaunus ierakstus aiz tiem.
Jaunajam ierakstam vajadzētu izskatīties šādi
myuser ALL=(ALL) NOPASSWD: ALL
vienam lietotājam vai
%sudo ALL=(ALL) NOPASSWD: ALL
grupai.
Viena lietotāja gadījumā pievienojiet šo rindu sudoers
faila beigās, izmantojot sudo visudo
.
superuser ALL=(ALL) NOPASSWD: ALL
Grupai
%supergroup ALL=(ALL) NOPASSWD: ALL