Sudoers fails, iespējot NOPASSWD lietotājam, visas komandas

Ievads

Š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.

jautājums

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ā?

Risinājums

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.

Komentāri (5)

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
Komentāri (3)

Vince ir komentārā minējis, jūs varat izmantot šo rindu:

%sudo ALL=NOPASSWD: ALL

(Tas atšķiras no tajās atbildēs parādītajām rindām, un man tas atrisināja problēmu.)

Komentāri (5)