sudo

Da Wikipedia, l'enciclopedia libera.
Sudo
Logo
Sudo su Gentoo e fish shell
Sudo su Gentoo e fish shell
Sviluppatore Todd C. Miller
Ultima versione 1.8.13 (21 marzo 2015)
Ultima beta 1.8.31rc2 (17 marzo 2015)
Sistema operativo Unix-like
Linguaggio C
Genere Sicurezza informatica
Licenza Licenza ISC
(Licenza libera)
Sito web www.sudo.ws

Sudo (abbreviazione dalla lingua inglese di super user do, "esegui come superutente", o di substitute user do, "esegui con sostituzione utente"[1]), in informatica, è un programma per i sistemi operativi Unix e Unix-like che, con dei vincoli, permette di eseguire altri programmi assumendo l'identità (e di conseguenza anche i privilegi) di altri utenti.

Alcuni sistemi come Mac OS X[2] e Ubuntu[3] installano sudo nativamente, mentre negli altri (ad esempio, Debian) esso va eventualmente installato in un secondo tempo.

Caratteristiche[modifica | modifica wikitesto]

I vincoli con cui sudo esegue programmi sono espressi nel file di configurazione /etc/sudoers, che normalmente è modificabile solo dall'utente root: in esso sono definiti gli utenti che possono eseguire comandi tramite sudo, le identità che possono assumere ed i comandi che possono eseguire con eventuali vincoli sui parametri, con o senza richiesta di autenticazione. Oltre che nel suddetto file di configurazione, tali informazioni possono essere memorizzate (con uno schema specifico per sudo) anche in un servizio di directory che sudo poi può interrogare via LDAP, offrendo quindi modo di condividere la stessa configurazione tra host diversi.

Nell'uso comune sudo viene configurato dall'amministratore di sistema per consentire a utenti non privilegiati di eseguire programmi assumendo l'identità dell'utente root, autenticandosi però con le proprie credenziali invece che con quelle di root. Al contrario del comando su ciò permette di evitare di dover diffondere le credenziali di root, semplificando così la gestione della sicurezza. Questo è ad esempio il comportamento predefinito dei sistemi Ubuntu per tutti gli utenti membri del gruppo speciale admin[3].

Sicurezza del sistema[modifica | modifica wikitesto]

Dal punto di vista della sicurezza occorre tuttavia tenere ben presente che, benché sia possibile limitare i comandi ed i relativi parametri, sudo non effettua controlli di sorta sull'integrità dei file eseguibili che esso va ad avviare, ed è quindi importante assicurarsi che essi non possano essere alterati o sostituiti da utenti non privilegiati, ed in particolare da quelli che li eseguono tramite sudo: in caso contrario, l'utente non privilegiato potrebbe alterare tali file in modo da eseguire codice arbitrario, e poi eseguirli con i privilegi concessi tramite sudo, di fatto creando un buco di sicurezza. Ciò si può prevenire ad esempio tramite il meccanismo dei permessi del sistema operativo.

Altre differenze rispetto al comando su consistono nella possibilità di configurare sudo per casi specifici in modo da non richiedere affatto autenticazione (utile per realizzare script non interattivi e non privilegiati che debbono effettuare alcune operazioni privilegiate) e/o limitare i comandi eseguibili ed i relativi parametri.

Sintassi[modifica | modifica wikitesto]

La sintassi generale di sudo è la seguente:

sudo [opzioni] [variabile1=valore1 …] [--] [comando [arg1 …]]

Il parametro facoltativo comando indica il comando da eseguire, ed i parametri arg sono i suoi parametri. È possibile assegnare delle variabili d'ambiente per l'esecuzione del comando facendolo precedere da parametri nella forma variabile=valore.

Il doppio trattino -- (facoltativo) indica che i parametri successivi non sono da considerarsi opzioni o assegnazioni di variabili.

Tra le opzioni principali vi sono:

-u utente
Assume l'identità di utente invece che quella di root.
-l
Elenca i comandi che l'utente corrente può eseguire tramite sudo.
-i
Avvia la shell predefinita per l'utente di cui si assume l'identità.

Esempi[modifica | modifica wikitesto]

Esegue con l'identità dell'utente root il comando apt-get install apache:

sudo apt-get install apache

Avvia il comando psql con l'identità dell'utente postgres e preimpostando la variabile d'ambiente LD_LIBRARY_PATH:

sudo -u postgres LD_LIBRARY_PATH=/usr/local/postgres/lib psql

Avvia la shell predefinita dell'utente alice:

sudo -u alice -i

Note[modifica | modifica wikitesto]

  1. ^ Kevin M. White, Mac OS X Support Essentials V10.6: A Guide to Supporting and Troubleshooting Mac OS X V10.6 Snow Leopard, Peachpit Press, p.144
  2. ^ Mac OS X: risoluzione dei problemi relativi ai privilegi, 28-08-2008. URL consultato il 26-03-2009.
  3. ^ a b (EN) User Management in Ubuntu Server Guide. URL consultato il 23-05-2012.

Voci correlate[modifica | modifica wikitesto]

  • su (Unix) – Avvia una shell con l'identità di un altro utente.
  • gksudo - Frontend grafico per il comando sudo disponibile in ambiente GNOME
  • kdesudo - Frontend grafico come sopra, ma disponibile in KDE
  • Root (utente)

Collegamenti esterni[modifica | modifica wikitesto]