Come si usa sudo?


24

Ho provato a configurare sudoprima, ma non ho avuto troppa fortuna con esso. Come è diverso da su -l -c "x"? Sembra che tramite il file di configurazione sia possibile farlo in modo che un utente possa avere accesso solo a determinati comandi e altro ancora. Ho sempre pensato sudocome un modo per allineare un comando come un altro utente o gruppo. Dato che le distro come Ubuntu e Mint lo rendono semplice, essenzialmente dando all'utente principale un facile accesso al root tramite una password, non sono sicuro di quale sia il suo uso previsto.

Come faccio ad aggiungere un utente al file sudo, dando loro i diritti per eseguire solo determinati comandi alla radice? Inoltre, non voglio aprire alcuna falla di sicurezza.

Risposte:


16

Per le operazioni di base - eseguendo i comandi come root - la differenza più visibile tra sudo e su è che sudo richiede la password dell'utente chiamante (cioè la password) mentre su richiede la password dell'utente di destinazione (ovvero la password root). Le implicazioni di sicurezza sono state ampiamente discusse in una domanda precedente: qual è il modo più sicuro per ottenere i privilegi di root: sudo, su o login? .

Sudo ha funzionalità aggiuntive oltre a quelle di su. In particolare, una volta che si dispone della password di un utente, è possibile eseguire qualsiasi comando come tale utente. D'altra parte, sudo può essere configurato in modo tale che l'utente che lo invoca possa eseguire comandi specifici solo come qualche altro utente. Questo è possibile perché sudo non richiede alcuna autenticazione (a parte forse confermare che sei tu digitando la password, ma è leggermente diverso dall'autenticare l'utente per un'attività).

Si modifica la configurazione sudo eseguendo il visudocomando come root (non modificare mai direttamente la configurazione). Assicurati che la variabile di ambiente EDITORo VISUALsia impostata sul tuo editor preferito o potresti ottenere un editor sconosciuto. La sudoerspagina man è un po 'concisa ma contiene esempi. Per consentire all'utente bobdi eseguire /bin/foo(con qualsiasi numero di argomenti) e /bin/bar --safe(ma non con qualsiasi altro argomento) come root, utilizzare le seguenti righe:

bob ALL = (root) /bin/foo
bob ALL = (root) /bin/bar --safe

2
sudoè una fantastica invenzione
tshepang,

1
Se sudo richiede la password di root o la password di root dipende dalla configurazione. Può essere impostato in entrambi i modi.
Jonathan M Davis,

3
@Tshepang Amen, fratello. Se dovessi rilasciare la password di root e spiegare le tecniche di supporto su come SU e non fare / niente / diverso da quello apache2ctl gracefulche penso preferirei tagliarmi i polsi e farcela .
Shadur,

6

La differenza più grande è che con sudote non hai bisogno della password di root per eseguire un comando come root, come faresti su. È necessaria la password di root per aggiungere qualcuno al sudoersfile, ma in seguito quella persona può eseguire tutti o alcuni (se l'hai limitato) come root senza richiedere un'altra password.

L'altra differenza è, come hai notato, che sudoconsente un controllo molto più preciso su quali comandi possono essere eseguiti.

Per i dettagli sul formato del sudoersfile eseguito man sudoers. Qui troverai esempi di come eseguire solo alcuni comandi come root. La struttura di base di ogni linea è:

user_list host_list = cmd_list

cmd_list può includere dettagli su quale utente è autorizzato a passare all'utente reale. Ad esempio, potresti consentire a un webmaster di passare a wwwroot per riavviare apache ma non per root. Può anche includere altre opzioni, ad esempio se è richiesta la password dell'utente prima di passare (questa è l'impostazione predefinita).

Una riga di esempio potrebbe essere:

joe  ALL=(ALL) ALL

il che significa: lascia che joe esegua qualsiasi comando su qualsiasi host come qualsiasi utente. Una linea più stretta potrebbe essere:

joe  ALL=(operator) /usr/local/ops/

il che significa: lascia che joe esegua qualsiasi comando nella directory / usr / local / ops come "operatore" dell'utente.

Ci sono molti esempi alla fine della pagina man sudoers.

È necessario modificare /etc/sudoerscon il comando visudo. Questo verifica che il file sia legale e ti aiuta a impedirti di romperlo accidentalmente.


La necessità o meno di una password quando si utilizza sudo dipende interamente dalla sudoersconfigurazione del file. Può essere impostato per richiedere una password o impostato per non richiedere una password.
Jonathan M Davis,

Ulteriori pratiche comuni per evitare di modificare il file principale / etc / sudoers perché IDS lo guarda e perché la sua formattazione può rovinare la tua giornata: Usa i frammenti di sudo come file separati in /etc/sudoers.d. L'uso del gruppo ruote per le persone consentiva qualsiasi comando.
bbaassssiiee

2

Oltre alle altre risposte, sudo fornisce funzionalità di registrazione in modo da poter tenere traccia di quali comandi sono stati eseguiti e da chi. Questo non è per motivi di sicurezza poiché un utente malintenzionato che ottiene l'accesso sudo può cancellare il registro. È molto utile però capire esattamente cosa tu o qualche altro amministratore avete fatto con gli occhi cisposi alle 2 di questa settimana.


3
È per motivi di sicurezza perché sudo supporta la registrazione al syslog che in qualsiasi configurazione importante relativa alla sicurezza sarà configurata per accedere a una macchina remota separata in modo che se un sistema è compromesso i registri non possono essere effettuati.
Arrowmaster,

L'attributo del file solo
accodamento
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.