Qual è la sintassi corretta dei sudoers per aggiungere un utente?


50

Secondo i commenti di /etc/sudoers(Fedora 13):

## Syntax:
##
##    user  MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.

Le mie due domande correlate:

  1. Cosa ALL=(ALL) ALLsignifica nella riga seguente:

    root  ALL=(ALL)   ALL
    
  2. Ho testato queste due linee ma non riesco a capire come siano funzionalmente differenti:

    superadm    ALL=(ALL)    ALL
    superadm    ALL=ALL
    

Ho letto il manuale ma le specifiche della sintassi sono difficili da seguire. Ho dedotto che la (ALL) ALLparte è il comando e le specifiche del tag, ma non riesco ancora a pensarci.

Risposte:


91

Nota: rispondo 1. , poiché Ignacio ha già risposto 2 ..

Nella seguente sudovoce:

superadm  ALL=(ALL)   ALL

ci sono quattro campi:

  • Il primo specifica un utente a cui verranno concessi i privilegi per alcuni comandi.
  • Il secondo è usato raramente. È un elenco di nomi host su cui questa voce sudo sarà efficace. Nelle configurazioni standard è rilevante solo un host (localhost), quindi questo campo è generalmente lasciato come ALL.
  • Il quarto campo è l'elenco dei comandi che superadmpotranno essere eseguiti con privilegi elevati. ALLindica tutti i comandi. In caso contrario, utilizzare un elenco di comandi separato da virgole.
  • Il terzo campo (quello scritto (…)facoltativo) specifica quali utenti (e gruppi) l' superadmutente sarà in grado di eseguire i seguenti comandi come. ALLsignifica che possono scegliere qualsiasi cosa (senza restrizioni). Se questo campo è omesso, significa lo stesso di (root).

Esempio:

alan   ALL = (root, bin : operator, system) /bin/ls, /bin/kill

Qui, alanè consentito eseguire i due comandi /bin/lse /bin/killcome root(o bin), possibilmente con privilegi aggiuntivi operatoro di systemgruppo.

Quindi alanpuò scegliere di eseguire lscome binutente e con operatori privilegi di gruppo come questo:

sudo -u bin -g operator /bin/ls /whatever/directory

Se -uviene omesso, è uguale a -u root. Se -gviene omesso, non vengono concessi privilegi di gruppo aggiuntivi.


1
Bene, questa è probabilmente la migliore risposta di sempre ...
David Betz,

1
Ho osservato che un \ncarattere di nuova riga è obbligatorio alla fine della voce in sudoers o /etc/sudoers.d/your_file_name
ramonrails il

Inoltre è possibile utilizzare i caratteri jolly nei nomi host, nei nomi dei percorsi e negli argomenti della riga di comando. Come /bin/cat /var/log/messages.?o /bin/ls /var/log/*maggiori informazioni qui
Alex

9

Dalla sudoers(5)pagina man, sezione DESCRIPTION , sottosezione Runas_Spec :

Il primo Runas_List indica quali utenti il ​​comando può essere eseguito come tramite sudol' -uopzione.

...

Se non viene specificato Runas_Spec, il comando può essere eseguito come roote nessun gruppo può essere specificato.

Quindi non vi è alcuna differenza funzionale quando si tenta di eseguire comandi come root, ad esempio, quando non si utilizza -ucon sudo. La differenza è importante quando si tenta di eseguire comandi come altri utenti; il secondo lo impedirà, ma il primo lo permetterà.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.