sudo
Sudo (abbreviazione dalla lingua inglese di super user do, "esegui come super 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.
Sudo software | |
---|---|
Sudo su Gentoo e fish shell | |
Genere | Sicurezza informatica |
Sviluppatore | Todd C. Miller |
Ultima versione | 1.9.16p1 (12 novembre 2024) |
Sistema operativo | Unix-like |
Linguaggio | C |
Licenza | Licenza ISC (licenza libera) |
Sito web | www.sudo.ws/ |
Originariamente il nome stava per super user do[1], poiché le prime versioni di sudo erano progettate per eseguire comandi solo come superutente; tuttavia, le versioni successive hanno aggiunto la possibilità di eseguire comandi non solo come superutente, ma anche come altri utenti (cosiddetti sudoer).
Alcuni sistemi come macOS[2] e Ubuntu[3] installano sudo nativamente, mentre in altri esso va eventualmente installato in un secondo tempo.
Caratteristiche
modificaI 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].
Aspetti legati alla sicurezza
modificaDal 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, e 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
modificaLa 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à.
È inoltre possibile accedere alla shell come utente root digitando:
sudo su
Esempi
modificaEsegue 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- ^ a b 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
- ^ Mac OS X: risoluzione dei problemi relativi ai privilegi, su support.apple.com, 28-08-2008. URL consultato il 26-03-2009.
- ^ a b (EN) User Management, in Ubuntu Server Guide. URL consultato il 23-05-2012 (archiviato dall'url originale il 2 aprile 2013).
Voci correlate
modificaAltri progetti
modifica- Wikimedia Commons contiene immagini o altri file su sudo
Collegamenti esterni
modifica- (EN) Sito ufficiale, su sudo.ws.
- Sudo, su packages.debian.org.
- Repository sorgenti di Sudo, su github.com.
- (EN) Sudo Manual, su sudo.ws.
- (EN) Sudoers Manual, su sudo.ws.