Che cosa fa il servizio sudo?

17

Per quanto ne so e sembra che altre persone abbiano il la stessa opinione sudo è un comando che esegue qualcosa con privilegi amministrativi.

Tuttavia quando eseguo rcconf posso vedere questa riga:

[*] sudo    Provide limited super user privileges to specific users

Quindi, che senso ha questo servizio? O è anche un servizio?

    
posta s3v3n 12.12.2012 - 14:21

2 risposte

21

Risposta breve

Per revocare le azioni di autenticazione "memorizzate nella cache" degli utenti al riavvio. Non è un demone, solo uno script eseguito all'avvio.

Risposta esauriente

Ispezionando il file init /etc/init.d/sudo che "avvia il servizio", puoi facilmente vedere cosa sta facendo:

case "" in
  start)
        # make sure privileges don't persist across reboots
        if [ -d /var/lib/sudo ]
        then
                find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
        fi
        ;;
  stop|reload|restart|force-reload)
        ;;
  *)
        echo "Usage: $N {start|stop|restart|force-reload}" >&2
        exit 1
        ;;
esac

Quindi, in pratica, tocca solo alcuni file in /var/lib/sudo all'avvio del sistema per avere un timestamp di modifica molto vecchio. Di conseguenza, le azioni di autenticazione concesse in "cache" vengono revocate all'avvio del servizio (che si verifica all'avvio).

Altri dettagli sulla directory /var/lib/sudo e quei timestamp, per favore? Bene, dal mapage di sudo(8) :

[...]
Once a user has been authenticated, a time stamp is updated and the
user may then use sudo without a password for a short period of time
(15 minutes unless overridden in sudoers).
[...]
Since time stamp files live in the file system, they can outlive a
user's login session.  As a result, a user may be able to login, run a
command with sudo after authenticating, logout, login again, and run
sudo without authenticating so long as the time stamp file's
modification time is within 15 minutes (or whatever the timeout is set
to in sudoers).
[...]
/var/lib/sudo           Directory containing time stamps
    
risposta data gertvdijk 12.12.2012 - 15:35
12

Il file di servizio sudo esiste per assicurarsi che i privilegi richiesti non rimangano dopo un riavvio. Fondamentalmente garantisce che dopo il riavvio, gli utenti normali che hanno richiesto i permessi di root rimarranno utenti normali.

Una spiegazione dettagliata su sudo

Tutte le spiegazioni seguenti sono di ottenere tutte le informazioni per tutti coloro che leggono questa domanda e per poi spiegare cosa sta facendo il file sudo nella cartella del servizio.

Quando installi Ubuntu o qualsiasi altra distribuzione che usa sudo la differenza tra essere root e essere un utente che usa sudo per ottenere i privilegi "root like" (Privilegi amministrativi o super utente ) è il seguente:

Come root

  • Non ti viene richiesta una password per ognuno o tutti i comandi che esegui su una sessione
  • Non tutti i comandi che esegui verranno registrati per impostazione predefinita
  • Il sistema presuppone che tu sappia cosa stai facendo (motivo per cui non richiede una password ogni volta che esegui un comando)
  • Non esiste una seconda possibilità o un'opzione dell'ultimo minuto se commetti un errore

Come sudo

  • Viene richiesta una password per ognuno o tutti i comandi eseguiti su una sessione. Ad esempio, se apri un terminale ed esegui un comando che richiede i privilegi di amministratore, richiederà una volta la password per quella sessione fino alla chiusura del terminale o alla disconnessione. Questo varia a seconda del comando che usi e dove. Potrebbe chiedere una o più volte.
  • Tutti i comandi che esegui verranno registrati poiché in effetti stai chiedendo il permesso di utilizzare un comando privilegiato per superutente.
  • Il sistema ti presuppone che chiedi il permesso temporaneamente e che il diritto amministrativo venga temporaneamente prestato (fino al logout, al terminale chiuso, ecc.)
  • Hai un'opzione dell'ultimo minuto per correggere qualsiasi errore. Questo viene fatto nel momento in cui ti viene chiesta la password.

Perché è stato creato SUDO

La creazione di SUDO è stata eseguita perché in passato, l'utilizzo di root ha creato più problemi che soluzioni. Gli utenti hanno tutti i diritti, il che significa che se hanno fatto un po 'di pulizia e hanno letteralmente cancellato le cartelle /usr , /lib e /bin (perché pensavano di non averne bisogno) ... indovina cosa succederebbe. Molti problemi in passato erano dovuti al fatto che gli utenti non conoscevano il potere che avevano quando usano root. Fondamentalmente avevano root ma non capivano Linux, la gerarchia del file system, quali file erano importanti, ecc. (Qualcosa come avere un ferrari e non sapere come guidare ... in un'autostrada!)

SUDO viene anche utilizzato dalle app della GUI (come Update Manager) quando necessitano di privilegi amministrativi temporanei per fare qualcosa. Ne hanno solo bisogno per una quantità specifica di comandi (in genere 1) e poi tornano al privilegio del livello utente. Questo per evitare di avere sempre privilegi di root e di evitare di commettere errori se l'utente decide di rimuovere alcune parti importanti del sistema.

Inoltre offre una sicurezza migliore perché l'utente root viene disabilitato per impostazione predefinita.

Infine, se si dispone di un PC desktop o server, in realtà non si vuole che tutti siano root, né di avere tutti i privilegi di amministratore. Pessima idea se la tua sorellina o fratellino inizi a chiedersi cosa succederebbe se la /boot incontrasse la chiave DEL . Qui entra in gioco sudo per diminuire la possibilità che qualcosa di brutto possa accadere.

Che cosa significa Fornisci privilegi di super utente limitati a utenti specifici ?

sudo user o sudoers hanno effettivamente un file di configurazione che dice loro quanto è limitato o aperto il comando sudo per un utente specifico. Il file /etc/sudoers ha tutte le informazioni per limitare o consentire l'accesso a un utente sudo. Per impostazione predefinita viene fornito l'accesso a tutto, ma puoi configurarlo o limitarlo a tuo piacimento.

Per informazioni su come utilizzare il tipo di file sudoers man sudoers in un terminale. Ad esempio, il formato normale è:

HOST UTENTE = COMANDI

Ad esempio, cyrex server1 = /bin/ls fornirà all'utente la cremisi nell'accesso al server host1 per eseguire il comando ls.

Ad esempio, cyrex server1 (root) = /bin/ls fornirà all'utente la cremisi nell'accesso al server host1 per eseguire il comando ls come root.

Ad esempio, cyrex ALL = /bin/ls fornirà all'utente la cremisi in tutti gli host per eseguire il comando ls.

Ad esempio, cyrex ALL = ALL darà all'utente cremisi in tutti gli host l'accesso per eseguire tutti i comandi.

Ad esempio luis ALL=(root) NOPASSWD: /bin/kill, /usr/bin/killall mi consentirà di eseguire sudo per i comandi kill e killall come root senza chiedere una password.

    
risposta data Luis Alvarado 12.12.2012 - 14:58

Leggi altre domande sui tag