Vai al contenuto

sudo

Da Wikipedia, l'enciclopedia libera.
Disambiguazione – Se stai cercando altri significati, vedi Sudo (disambigua).
Sudo
software
Logo
Logo
Sudo su Gentoo e fish shell
Sudo su Gentoo e fish shell
Sudo su Gentoo e fish shell
GenereSicurezza informatica
SviluppatoreTodd C. Miller
Ultima versione1.9.16p1 (12 novembre 2024)
Sistema operativoUnix-like
LinguaggioC
LicenzaLicenza ISC
(licenza libera)
Sito webwww.sudo.ws/

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.

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

[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].

Aspetti legati alla sicurezza

[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, 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.

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.

Un esempio di comando sudo, su Ubuntu
Un esempio di comando sudo, su Ubuntu

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

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
  1. ^ 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
  2. ^ Mac OS X: risoluzione dei problemi relativi ai privilegi, su support.apple.com, 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 (archiviato dall'url originale il 2 aprile 2013).

Voci correlate

[modifica | modifica wikitesto]

Altri progetti

[modifica | modifica wikitesto]

Collegamenti esterni

[modifica | modifica wikitesto]