13493
Commento:
|
14376
|
Le cancellazioni sono segnalate in questo modo. | Le aggiunte sono segnalate in questo modo. |
Linea 1: | Linea 1: |
#format wiki | |
Linea 3: | Linea 4: |
||<tablestyle="float:right; font-size: 0.9em; width:40%; background:#F1F1ED; margin: 0 0 1em 1em;" style="padding:0.5em;">'''Indice'''[[BR]][[TableOfContents]]|| | ||<tablestyle="float:right; font-size: 0.9em; width:35%; background:#F1F1ED; margin: 0 0 1em 1em;" style="padding:0.5em;">'''Indice'''[[BR]][[TableOfContents]]|| |
Linea 9: | Linea 10: |
Nella maggior parte dei sistemi GNU/Linux, l'amministratore del computer non usa l'utente root (per motivi di sicurezza) ma usa un utente "normale" per svolgere il lavoro quotidiano. Quando ha la necessità di svolgere mansioni di amministrazione apre un terminale e avvia una sessione come utente root, oppure se si trova già in un terminale come utente normale usa il comando {{{su}}} per diventare utente root. Ubuntu usa un sistema diverso per compiere operazioni amministrative, basato sull'utilizzo del comando {{{sudo}}}. = Sudo = '''Sudo''' (SUperuser DO) è un programma che consente di eseguire un comando come se si fosse un altro utente. Effettua una specie di sostituzione, previa autorizzazione, tra l'utente attuale (colui che esegue il comando '''sudo''') e l'utente target (colui che esegue l'effettivo comando). Mentre con '''su''' si cambia utente fino al termine della sessione del terminale, '''sudo''' assegna i privilegi dell'utente target al solo processo (e ai suoi processi figli) che viene con esso avviato. Per eseguire dei comandi con privilegi d'amministrazione utilizzando '''sudo''', bisogna digitare '''sudo''' e successivamente il comando che si desidera eseguire come utente root, come nel seguente esempio: {{{ |
Nella maggior parte dei sistemi GNU/Linux, l'amministratore del computer non usa l'utente ''amministratore'' (per motivi di sicurezza) ma usa un utente ''normale'' per svolgere il lavoro quotidiano. Quando ha la necessità di svolgere mansioni di amministrazione apre un terminale e avvia una sessione come utente '''root''', oppure se si trova già in un terminale come utente normale usa il comando '''su''' per diventare utente '''root'''. '''Ubuntu''' usa un sistema diverso per compiere operazioni amministrative, basato sull'utilizzo del comando '''sudo'''. = Il comando sudo = '''sudo''' ('''s'''uper``'''u'''ser '''do''') consente di eseguire un comando come se si fosse un altro utente. Effettua una specie di sostituzione, previa autorizzazione, tra l'utente attuale (colui che esegue il comando '''sudo''') e l'utente ''target'' (colui che esegue l'effettivo comando). Mentre con il comando '''su''' si cambia utente fino al termine della sessione del terminale, '''sudo''' assegna i privilegi dell'utente target al solo processo (e ai suoi processi figli) che viene con esso avviato. Per eseguire dei comandi con privilegi d'amministrazione è sufficiente digitare '''sudo''' e successivamente il comando che si desidera eseguire come utente '''root''', come nel seguente esempio: {{{ |
Linea 21: | Linea 23: |
L'utente target non deve essere necessariamente root, ma può essere un qualsiasi utente del sistema. Per scegliere l'utente target, usare l'opzione -u: {{{ sudo -u utenteTarget comando }}} Dato il comando, il sistema chiederà la password dell'utente attuale e non la password dell'utente target (a meno che non si configuri sudo in modo diverso). La password viene chiesta la prima volta e memorizzata per un certo lasso di tempo, quindi è possibile usare il comando '''sudo''' più volte consecutive senza dover inserire ogni volta la password. Con '''sudo''' l'amministratore del sistema può assegnare privilegi particolari a qualsiasi utente, definire quali comandi far eseguire e quali no, avere il log di tutte le operazioni effettuate e ricevere via email informazioni su tentativi non autorizzati. |
L'utente ''target'' non deve essere necessariamente l'amministratore, ma può essere un qualsiasi utente del sistema. Per scegliere l'utente ''target'', usare l'opzione '''-u''': {{{ sudo -u target comando }}} Una volta digitato il comando, il sistema chiederà la password dell'utente attuale e non la password dell'utente ''target'' (a meno che non si configuri '''sudo''' in modo diverso). La password viene chiesta la prima volta e memorizzata per un certo lasso di tempo, quindi è possibile usare il comando '''sudo''' più volte consecutive senza dover inserire ogni volta la password. Con '''sudo''' l'amministratore del sistema può assegnare privilegi particolari a qualsiasi utente, definire quali comandi far eseguire e quali no, avere il log di tutte le operazioni effettuate e ricevere via email informazioni su tentativi di accesso non autorizzati. [[Anchor(parametri)]] |
Linea 32: | Linea 35: |
'''Sudo''' può essere lanciato con una serie di parametri che ne modificano il funzionamento temporaneamente. Alcuni di essi sono: | '''sudo''' può essere lanciato con una serie di parametri che ne modificano il funzionamento temporaneamente. Alcuni di essi sono: |
Linea 49: | Linea 52: |
In Ubuntu, in modo predefinito, il login come utente root è disabilitato, impedendo così l'utilizzo di '''su''', ma permettendo comunque l'utilizzo di '''sudo'''. Questa scelta è stata effettuata per motivi di sicurezza. Se strettamente necessario, è possibile attivare il login come utente root assegnandogli una password con il comando: {{{ |
In '''Ubuntu''', in modo predefinito, il login come utente '''root''' è disabilitato, impedendo così l'utilizzo di '''su''', ma permettendo comunque l'utilizzo di '''sudo'''. Questa scelta è dovuta a motivi di sicurezza. Se strettamente necessario, è possibile attivare il login come utente '''root''' assegnandogli una password con il seguente comando: {{{ |
Linea 54: | Linea 58: |
Linea 56: | Linea 61: |
Per disabilitare l'account root si può usare: {{{ | Per disabilitare il login come utente '''root''' si può usare il seguente comando: {{{ |
Linea 59: | Linea 65: |
In questo modo il login come utente root risulterà bloccato. = Avviare applicazioni grafiche con permessi di root = Quando è necessario avviare da terminale un'applicazione grafica usando i privilegi d'amministrazione, usare il comando: {{{ |
In questo modo il login come utente '''root''' risulterà nuovamente bloccato. = Avviare applicazioni grafiche con privilegi di amministrazione = Quando è necessario avviare da terminale un'applicazione grafica usando i privilegi d'amministrazione, usare il seguente comando: {{{ |
Linea 65: | Linea 73: |
}}} o per KDE: {{{ | }}} Nel caso si usi '''KDE''' è utile sostituire il comando precedente con quello che segue: {{{ |
Linea 68: | Linea 79: |
È sconsigliato usare '''sudo''' per avviare un'applicazione grafica, in quanto sudo non imposterà le variabili d'ambiente correttamente, in modo particolare in KDE. | È sconsigliato usare '''sudo''' per avviare un'applicazione grafica, in quanto sudo non imposterà le variabili d'ambiente nella maniera corretta, in modo particolare in '''KDE'''. |
Linea 79: | Linea 91: |
* impostazione degli [#definizionealias alias], * impostazione delle [#opzionidefault opzioni di default], * impostazione delle [#autorizzazioni autorizzazioni]. |
* impostazione degli [#definizionealias alias]; * impostazione delle [#opzionidefault opzioni di default]; * impostazione delle [#autorizzazioni autorizzazioni]. |
Linea 90: | Linea 100: |
Le istruzioni di definizione degli alias seguono la forma: {{{ | Le istruzioni di definizione degli alias seguono la forma: {{{ |
Linea 102: | Linea 113: |
Esempi di alias: {{{ | Esempi di alias: {{{ |
Linea 105: | Linea 117: |
definisce un gruppo di utenti a cui ci si potrà riferire con AMMINISTRATORI. | Le precedenti istruzioni definiscono un gruppo di utenti a cui ci vi si potrà riferire con la dicitura «AMMINISTRATORI». La seguente istruzione definisce un gruppo di comandi: |
Linea 110: | Linea 124: |
definisce un gruppo di comandi. |
La seguente istruzione definisce un gruppo di host: |
Linea 115: | Linea 129: |
definisce un gruppo di host. | |
Linea 120: | Linea 133: |
Con le impostazioni di default si configura il funzionamento standard di '''sudo''' impostando una serie di parametri con la parola chiave '''Defaults''' Ci sono decine di parametri impostabili con ''Defaults'', i principali sono: * '''mail_always''': invia una mail all'utente configurato con l'opzione '''mailto''' per ogni comando eseguito con sudo * '''mail_badpass''': invia una mail quando un utente inserisce una password sbagliata * '''mail_no_user''': invia una mail quando l'utente non è tra gli utenti definiti in `/etc/sudoers` * '''rootpw''': indica a sudo di richiedere la password di root invece della password utente per l'autenticazione * '''targetpw''': indica a sudo di richiedere la password di dell'utente target invece della password utente per l'autenticazione * '''passwd_timeout''': imposta il tempo in minuti dopo il quale sudo dimentica la password inserita dall'utente * '''mailsub''': imposta il destinatario delle mail inviate da sudo * '''mailto''': imposta l'indirizzo email dell'utente al quale sudo inoltra le mail di segnalazione. * '''logfile''': imposta il file di log per il logging delle operazioni |
Con le impostazioni di default si configura il funzionamento standard di '''sudo''' impostando una serie di parametri con la parola chiave '''Defaults'''. Ci sono decine di parametri impostabili con '''Defaults''', i principali sono i seguenti: * '''mail_always''': invia una mail all'utente configurato con l'opzione '''mailto''' per ogni comando eseguito con '''sudo'''; * '''mail_badpass''': invia una mail quando un utente inserisce una password sbagliata; * '''mail_no_user''': invia una mail quando l'utente non è tra gli utenti definiti in `/etc/sudoers`; * '''rootpw''': indica a sudo di richiedere la password di root invece della password utente per l'autenticazione; * '''targetpw''': indica a sudo di richiedere la password di dell'utente target invece della password utente per l'autenticazione; * '''passwd_timeout''': imposta il tempo in minuti dopo il quale '''sudo''' dimentica la password inserita dall'utente. Se impostato a 0; * '''timestamp_timeout''': imposta il tempo in minuti dopo il quale verrà richiesta nuovamente la password. Se impostato a 0 ad ogni comando verrà richiesta la password; * '''mailsub''': imposta l'oggetto delle mail inviate. Il messaggio di default è il seguente: {{{ *** SECURITY information for %h *** }}} È possibile usare il parametro «%h» come nome host; * '''mailto''': imposta l'indirizzo email dell'utente al quale sudo inoltra le mail di segnalazione; * '''logfile''': imposta il [:LogDiSistema:file di log] per il logging delle operazioni. |
Linea 142: | Linea 159: |
* ecc ... |
|
Linea 149: | Linea 164: |
La forma standard è: {{{ | La forma standard è la seguente: {{{ |
Linea 214: | Linea 230: |
---- * Autore del documento: BeniaminoCaputo (Mizar) |
= Ulteriori risorse = * [http://www.sudo.ws/ Sito ufficiale del progetto] * [:Sicurezza:Guida alla sicurezza in Ubuntu] ## PrioritàAlta |
IndiceBRTableOfContents |
Introduzione
Nei sistemi operativi Unix/Linux c'è un utente particolare, detto super utente e contraddistinto dall'avere un UID (User ID) uguale a 0 e nome utente root, che ha totale accesso al sistema senza nessuna restrizione, cioè ne è l' amministratore.
Nella maggior parte dei sistemi GNU/Linux, l'amministratore del computer non usa l'utente amministratore (per motivi di sicurezza) ma usa un utente normale per svolgere il lavoro quotidiano. Quando ha la necessità di svolgere mansioni di amministrazione apre un terminale e avvia una sessione come utente root, oppure se si trova già in un terminale come utente normale usa il comando su per diventare utente root.
Ubuntu usa un sistema diverso per compiere operazioni amministrative, basato sull'utilizzo del comando sudo.
Il comando sudo
sudo (superuser do) consente di eseguire un comando come se si fosse un altro utente. Effettua una specie di sostituzione, previa autorizzazione, tra l'utente attuale (colui che esegue il comando sudo) e l'utente target (colui che esegue l'effettivo comando). Mentre con il comando su si cambia utente fino al termine della sessione del terminale, sudo assegna i privilegi dell'utente target al solo processo (e ai suoi processi figli) che viene con esso avviato.
Per eseguire dei comandi con privilegi d'amministrazione è sufficiente digitare sudo e successivamente il comando che si desidera eseguire come utente root, come nel seguente esempio:
sudo nano /etc/modules
L'utente target non deve essere necessariamente l'amministratore, ma può essere un qualsiasi utente del sistema. Per scegliere l'utente target, usare l'opzione -u:
sudo -u target comando
Una volta digitato il comando, il sistema chiederà la password dell'utente attuale e non la password dell'utente target (a meno che non si configuri sudo in modo diverso). La password viene chiesta la prima volta e memorizzata per un certo lasso di tempo, quindi è possibile usare il comando sudo più volte consecutive senza dover inserire ogni volta la password.
Con sudo l'amministratore del sistema può assegnare privilegi particolari a qualsiasi utente, definire quali comandi far eseguire e quali no, avere il log di tutte le operazioni effettuate e ricevere via email informazioni su tentativi di accesso non autorizzati.
Parametri alla riga di comando
sudo può essere lanciato con una serie di parametri che ne modificano il funzionamento temporaneamente. Alcuni di essi sono:
-H: imposta la variabile di sistema $HOME con la directory home dell'utente target, cioè quello che eseguirà il comando, normalmente root. Di default sudo lascia inalterata la $HOME.
-b: indica a sudo di eseguire il comando in background.
-k: serve a eliminare il ricordo della password per l'utente. Al successivo utilizzo di sudo verrà nuovamente richiesta la password.
-l: visualizza i comandi che si è autorizzati a usare o non usare.
-i: consente di entrare nella shell come utente target simulando il login per il nuovo utente e impostando le variabili d'ambiente. In pratica vi consente di diventare root e quindi non dover utilizzare sudo per ogni comando.
-s: consente di entrare nella shell come utente target. Questa opzione è quasi identica a -i, ma non imposta le variabili d'ambiente dell'utente target.
Abilitare il login come utente root
In Ubuntu, in modo predefinito, il login come utente root è disabilitato, impedendo così l'utilizzo di su, ma permettendo comunque l'utilizzo di sudo. Questa scelta è dovuta a motivi di sicurezza.
Se strettamente necessario, è possibile attivare il login come utente root assegnandogli una password con il seguente comando:
sudo passwd root
La prima password richiesta è quella per sudo, successivamente verrà richiesta la password per l'utente root e la successiva conferma.
Per disabilitare il login come utente root si può usare il seguente comando:
sudo passwd -l root
In questo modo il login come utente root risulterà nuovamente bloccato.
Avviare applicazioni grafiche con privilegi di amministrazione
Quando è necessario avviare da terminale un'applicazione grafica usando i privilegi d'amministrazione, usare il seguente comando:
gksudo [applicazione]
Nel caso si usi KDE è utile sostituire il comando precedente con quello che segue:
kdesu [applicazione]
È sconsigliato usare sudo per avviare un'applicazione grafica, in quanto sudo non imposterà le variabili d'ambiente nella maniera corretta, in modo particolare in KDE.
Configurazione
È possibile modificare la configurazione di sudo con il seguente comando:
sudo visudo
Il file di configurazione /etc/sudoers è composto da tre sezioni:
- impostazione degli [#definizionealias alias];
- impostazione delle [#opzionidefault opzioni di default];
- impostazione delle [#autorizzazioni autorizzazioni].
Impostazione degli alias
In questa sezione vengono definiti degli alias in modo da potersi riferire, successivamente, in modo più semplice alle informazioni per la configurazione dei privilegi utente.
Le istruzioni di definizione degli alias seguono la forma:
tipo_alias NOME_ALIAS = voce1, voce2, voce3 ... voceX
Dove tipo_alias può essere:
User_Alias per definire l'alias per un elenco di utenti
Cmnd_ALias per definire l'alias per un elenco di comandi
Host_Alias per definire l'alias per un elenco di host
Esempi di alias:
User_Alias AMMINISTRATORI = utente1, utente2, utente3
Le precedenti istruzioni definiscono un gruppo di utenti a cui ci vi si potrà riferire con la dicitura «AMMINISTRATORI».
La seguente istruzione definisce un gruppo di comandi:
Cmnd_Alias UTILITY = /sbin/comando1, /usr/bin/comando2, etc..
La seguente istruzione definisce un gruppo di host:
Host_Alias MACCHINE = macchina1, macchina2, macchina3
Impostazione delle opzioni di default
Con le impostazioni di default si configura il funzionamento standard di sudo impostando una serie di parametri con la parola chiave Defaults.
Ci sono decine di parametri impostabili con Defaults, i principali sono i seguenti:
mail_always: invia una mail all'utente configurato con l'opzione mailto per ogni comando eseguito con sudo;
mail_badpass: invia una mail quando un utente inserisce una password sbagliata;
mail_no_user: invia una mail quando l'utente non è tra gli utenti definiti in /etc/sudoers;
rootpw: indica a sudo di richiedere la password di root invece della password utente per l'autenticazione;
targetpw: indica a sudo di richiedere la password di dell'utente target invece della password utente per l'autenticazione;
passwd_timeout: imposta il tempo in minuti dopo il quale sudo dimentica la password inserita dall'utente. Se impostato a 0;
timestamp_timeout: imposta il tempo in minuti dopo il quale verrà richiesta nuovamente la password. Se impostato a 0 ad ogni comando verrà richiesta la password;
mailsub: imposta l'oggetto delle mail inviate. Il messaggio di default è il seguente:
*** SECURITY information for %h ***
È possibile usare il parametro «%h» come nome host;mailto: imposta l'indirizzo email dell'utente al quale sudo inoltra le mail di segnalazione;
logfile: imposta il [:LogDiSistema:file di log] per il logging delle operazioni.
Impostazione delle autorizzazioni
I comandi per l'impostazione dei privilegi, definiscono quali utenti possono utilizzare quali comandi, da quali host e in che modo.
La forma standard è la seguente:
elenco_utenti elenco_host = (user_target) elenco_comandi
elenco_utenti: può essere un utente, un alias definito in precedenza o anche un gruppo di sistema definito in /etc/group precedendo il nome del gruppo con il simbolo percentuale [%]. Possono essere inserite varie voci, separando ciascuna con una virgola [,]
elenco_host: i nomi delle macchine da cui è consentito utilizzare sudo. Si può usare anche un alias definito per gli host. Possono essere inserite varie voci, separando ciascuna con una virgola [,]. Con ALL si consente l'uso di sudo da qualsiasi host.
(user_target): è un parametro opzionale con cui si dice a sudo di eseguire i comandi come utente user_target invece che root.
elenco_comandi: l'elenco dei comandi a cui si da autorizzazione. Si può usare anche un alias definito per i comandi. Possono essere inserite varie voci, separando ciascuna con una virgola [,]. Con ALL si consente l'esecuzione di qualsiasi comando.
BRSi può anche inserire il nome di una directory, terminando il percorso con uno slash [/] per indicare tutti i comandi contenuti in quella directory.
La parola chiave NOPASSWD indica che per i comandi definiti successivamente non è richiesto l'inserimento della password.
Si può negare l'esecuzione di un comando, o un gruppo di comandi, inserendo prima di elenco_comandi un punto esclamativo [!].BRQuesta modalità è comunque sconsigliata in quanto è sempre possibile aggirare la negazione rinominando il comando.
Esempi di autorizzazioni:
pippo ALL = (ALL) ALL
assegna all'utente pippo qualsiasi privilegio;
AMMINISTRATORI ALL = UTILITY
assegna agli utenti raggruppati in AMMINISTRATORI i privilegi per eseguire i comandi raggruppati in UTILITY da qualunque host;
utente1,utente2 macchina1 = (utente2) NOPASSWD: /directory1/comando1, /directory2/, !/directory2/comando2
si consente a utente1 e utente2, se collegati sulla macchina1, la possibilità di eseguire il comando1 ed i comandi in /directory2, ma non /directory2/comando2 come utente2, senza richiedere la password.
Possibili problemi con il modello sudo
Benché l'utilizzo di sudo per il desktop abbia molti benefici, ci sono dei possibili problemi che è necessario elencare:
Alcuni pacchetti dal repository Universe sono effettivamente danneggiati (es. webmin) o pericolosi da utilizzare. Un trucco per evitare problemi è abilitare l'account di root prima dell'installazione o dell'utilizzo di tali pacchetti, per poi disabilitarlo.
Redirigere l'output di alcuni comandi eseguiti con sudo può portare nuovi utenti a strane conclusioni (considerate sudo ls > /root/file). Per raggirare ciò si può utilizzare sudo sh -c 'ls > /root/file', utilizzando [http://www.greenend.org.uk/rjk/2001/06/adverbio.html Adverbio] o semplicemente utilizzando sudo -s per ottenere una shell di root e procedere da lì.
Considerazioni
La scelta di Ubuntu è dettata da alcune considerazioni:
Il team Ubuntu desiderava rendere il processo di installazione il più semplice possibile. Disabilitando l'account root alcuni passi durante l'installazione non sono più necessari.
Un altro motivo è che abilitando l'account root, l'utente ha la necessità di ricordare per sempre la password anche se normalmente userà l'account root molto raramente. Normalmente la password di root è dimenticata dagli utenti alle prime armi in un ambiente Unix/Linux.
sudo evita eventuali disattenzioni nell'utilizzo di comandi, chiedendo la password nel caso si stiano per lanciare comandi amministrativi e consente un log completo dei comandi eseguiti in /var/log/auth.log permettendo l'analisi di ciò che è avvenuto nel sistema.
In ognuno dei due modelli, sudo e su, ci sono vantaggi e svantaggi.
sudo, costringendo all'esecuzione controllata di singoli comandi, invece di aprire una shell root:
- Riduce il tempo in cui gli utenti sono nel sistema come root e quindi riduce i rischi di lanciare inavvertitamente comandi dannosi per il sistema.
- Aumenta la possibilità di ricerca e analisi sul sistema grazie al log dei comandi.
Di contro, se qualcuno scopre la password di un utente abilitato all'utilizzo di sudo come root in effetti può ottenere accesso come root. Normalmente le password utente sono più semplici, rispetto a quelle scelte per l'utente root, e ciò può dare problemi. Nel caso di utilizzo di sudo bisogna prestare una maggiore attenzione alla scelta della password utente.
I sostenitori del modello su, cioè account di root abilitato e utilizzo di una shell di root per compiti amministrativi, sostengono che su sia più sicuro in quanto il livello di root si ottiene dopo l'inserimento di due password, la password utente e la password di root.
D'altra parte, chi cerca di entrare in un sistema ha la necessità di scoprire due cose, il nome utente e la password. Con l'account di root abilitato, una delle due è già nota, serve solo scoprire la password. Con sudo si devono scoprire entrambe (nome utente e password).
Quando in un sistema alcuni compiti amministrativi sono assegnati a vari utenti, l'utilizzo di sudo evita di dover dare la password di root a più utenti. L'amministratore può assegnare a qualsiasi utente, temporaneamente, privilegi particolari, eliminandoli o limitandoli quando non vi è più necessità.
Ulteriori risorse
[http://www.sudo.ws/ Sito ufficiale del progetto]
[:Sicurezza:Guida alla sicurezza in Ubuntu]
CategorySicurezza CategoryAmministrazione CategoryDaRevisionare