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.