/ etc / sudoers imposta all'utente l'uso generale di sudo, senza richiedere la password per un solo comando


1

Ho una voce in / etc / sudo per un utente che può eseguire sudo per tutti i comandi.

fred ALL = (TUTTI: TUTTI) TUTTI

Come da documentazione, l'ALL finale è responsabile per consentire l'accesso a tutti i comandi.

Vorrei che fred sia in grado di eseguire un riavvio di nginx su Ubuntu 14.04 senza fornire una password sudo, pur mantenendo la possibilità di invocare sudo per altri comandi. Il sudoers la documentazione non è chiara, ma credo

fred ALL = (TUTTI) NOPASSWD: / usr / sbin / service

lascia solo che Fred esegua un comando. Voglio dare a fred la possibilità di eseguire tutti i comandi come root tramite sudo, con tutti tranne / usr / sbin / service che richiede una password.

Guardando il BNF della documentazione

User_Spec ::= User_List Host_List '=' Cmnd_Spec_List  (':' Host_List '=' Cmnd_Spec_List)*   

Cmnd_Spec_List ::= Cmnd_Spec | Cmnd_Spec ',' Cmnd_Spec_List

Cmnd_Spec ::= Runas_Spec? SELinux_Spec? Solaris_Priv_Spec? Tag_Spec* Cmnd 

Runas_Spec ::= '(' Runas_List? (':' Runas_List)? ')' 

SELinux_Spec ::= ('ROLE=role' | 'TYPE=type') 

Solaris_Priv_Spec ::= ('PRIVS=privset' | 'LIMITPRIVS=privset')   

Tag_Spec ::= ('EXEC:' |
              'NOEXEC:' | 'FOLLOW:' | 'NOFOLLOW' |
              'LOG_INPUT:' | 'NOLOG_INPUT:' | 'LOG_OUTPUT:' |
              'NOLOG_OUTPUT:' | 'MAIL:' | 'NOMAIL:' | 'PASSWD:' |
              'NOPASSWD:' | 'SETENV:' | 'NOSETENV:')

sembra che potrei essere in grado di utilizzare più Cmnd_Spec_Lists così

fred ALL = (TUTTI: TUTTI) TUTTI, NOPASSWD: / usr / sbin / service

Ma la documentazione non dice che quest'ultimo NOPASSWD: Cmnd_Spec sovrascriverà l'accesso alla radice del comando ALL solo per quel comando.

È il tipo di cosa che mi piace avere ragione la prima volta, qualcuno può confermare per favore che l'ultima linea funzioni (o, alternativamente, dica che non funzionerà) per lo scopo specifico in mano, per favore?

Inoltre se funziona per consentire a fred di eseguire il servizio senza una password sudo, c'è un modo per limitare gli argomenti al servizio, quindi fred può funzionare senza una password sul servizio nginx, o anche meglio, quindi fred può solo riavviare quel server senza una password?

Grazie.

Risposte:


0

Ciao Questo potrebbe funzionare Provalo accedi come root e segui i comandi sottostanti $ aggiungi le righe seguenti nel file sudoers

fred ALL = (TUTTI) NOPASSWD: TUTTI


Questa non è la risposta a quello che ti ho chiesto, cosa suggerisci a Sudheer dà a fred la possibilità di eseguire tutti i comandi tramite sudo senza che venga richiesta una password. Ma grazie.
reboot

0

I comandi nella parte inferiore della configurazione sovrascrivono quelli sopra. È menzionato nella documentazione di https://www.sudo.ws/man/1.8.15/sudoers.man.html#SUDOERS_FILE_FORMAT che non è il più né meno specifico, a meno che non li metta in ordine in quel modo.

Lo faccio usando più linee. Più linee e regole sono più facili da leggere e comprendere in futuro, quando le cose si complicano. Più linee possono aiutarti a impostare l'ordine.

# I don't know what order this is interpreted in:
fred ALL=(ALL : ALL) ALL, NOPASSWD: /usr/sbin/service

# I do know what order this is interpreted in:
fred ALL=(ALL) ALL
fred ALL=(ALL) NOPASSWD: /usr/sbin/service

Le seguenti righe provengono dal mio file sudoers. Permettere membri del gruppo wheel per eseguire tutti i comandi, quindi eseguire in modo specifico i comandi in REBOOT alias senza password.

Cmnd_Alias      REBOOT = /sbin/halt, /sbin/reboot, \
                         /sbin/poweroff, /sbin/shutdown
%wheel ALL=(ALL) ALL
%wheel ALL=(ALL) NOPASSWD: REBOOT

Sfortunatamente non ho molta documentazione pubblica a cui indirizzarti. La pagina man di sudoers è ridicola. Ho letto un grande libro (facile da leggere) su di esso da un po 'di tempo fa ( Sudo Maestria di Michael W. Lucas) e questo esempio funziona per me su più Linux e amp; Macchine BSD.

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.