Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati
  • Differenze per "AmministrazioneSistema/PrivilegiDiAmministrazione"
Differenze tra le versioni 7 e 108 (in 101 versioni)
Versione 7 del 08/11/2005 14.00.36
Dimensione: 14129
Commento: Unione del documento con RootSudo
Versione 108 del 01/12/2022 16.43.59
Dimensione: 3533
Autore: gnomefanatic
Commento: Revisione
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 1: Linea 1:
||<tablestyle="float:right; font-size: 0.9em; width:40%; background:#F1F1ED; margin: 0 0 1em 1em;" style="padding:0.5em;">'''Indice'''[[BR]][[TableOfContents]]|| ## page was renamed from AmministrazioneSistema/Sudo
## docs intrepid
#format wiki
#LANGUAGE it
<<BR>>
<<Indice(depth=2)>>
<<Informazioni(forum="http://forum.ubuntu-it.org/viewtopic.php?f=46&t=607378"; rilasci="20.04 18.04 16.04 14.04")>>
Linea 3: Linea 9:
== Introduzione ==
----
= Introduzione =
Linea 6: Linea 11:
Nei sistemi operativi Unix/Linux c'è un utente particolare, il super utente, contraddistinto dall'avere UID 0 (User ID), con username root. L'utente root in un sistema Linux è il mammasantissima, l'onnipotente, colui che ha accesso totale al sistema senza nessuna restrizione. Nei sistemi operativi Unix e GNU/Linux c'è un utente particolare, detto '''super utente''', contraddistinto dall'avere un '''UID''' (User ID) uguale a '''0''' e nome utente '''root''', che ha accesso completo al sistema senza nessuna restrizione. Ne è quindi l' '''amministratore'''.
Linea 8: Linea 13:
Normalmente l'amministratore (root) non entra nel sistema come utente root, sia per motivi di sicurezza, sia per non trovarsi in un ambiente diverso da quello a cui è normalmente abituato: desktop, home directory, etc ... 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'''.
Linea 10: Linea 15:
In genere ogni amministratore di sistema ha anche un account utente, diciamo "normale", con il quale svolge lavoro di routine. Quando ha la necessità di svolgere mansioni di amministratore assume i privilegi di root con il comando `su` (Substitute User). '''Ubuntu''' usa un sistema diverso per compiere operazioni amministrative, basato sull'utilizzo del comando '''sudo'''.<<BR>>
Ciò comporta i seguenti vantaggi:
 * Con '''sudo''' l'utente non ha la necessità di ricordare per sempre la password, anche se normalmente userà l'account '''root''' molto raramente.
 * Costringendo l'utente comune all'esecuzione controllata dei singoli comandi (mediante digitazione della password), si limitano eventuali disattenzioni nell'utilizzo degli stessi.
 * Viene mantenuto un [[AmministrazioneSistema/LogDiSistema#autorizzazione|log]] completo dei comandi eseguiti, permettendo l'analisi di ciò che è avvenuto nel sistema.
 * Vi è maggiore sicurezza se si ha abilitato l'account '''root''', poiché se si utilizza '''su''' è necessario inserire due password (quella utente e quella dell'account '''root''').
 * Quando in un sistema alcuni compiti amministrativi sono condivisi fra diversi account, l'utilizzo di '''sudo''' evita di dover dare la password di '''root''' a vari utenti.
 * L'amministratore può assegnare o revocare, a proprio piacimento, i privilegi di amministrazione a qualsiasi utente. Quindi, vi è la possibilità di assegnarli temporaneamente a un utente, per poi limitarli quando non più necessario.
Linea 12: Linea 24:
Il comando `su user`, dopo la richiesta della password di user, apre una shell per l'utente user.

Con `su`, senza parametro, viene aperta di default una shell di root, cioè una sessione di terminale in cui si è a tutti gli effetti root.

Ultimamente si sta diffondendo un altro sistema per l'aquisizione dei privilegi di root: l'utilizzo del comando `sudo`.

== SUDO ==
----

`sudo` (SUperuser DO) è un programma che consente di eseguire dei comandi come se si fosse un altro utente. Effettua una specie di sostituzione, previa autorizzazione, tra l'utente normale (colui che esegue il comando sudo) e l'utente target (colui che esegue l'effettivo comando).

L'utente target non deve essere necessariamente root, ma può essere un qualsiasi utente del sitema.

Mentre con `su` si diventa root fino ad un esplicito rilascio dei privilegi, `sudo` assume i privilegi di root (o di un altro utente) solo per il tempo necessario all'esecuzione del comando.

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 ed anche ricevere via email informazioni su tentativi non autorizzati.

Per eseguire dei comandi utilizzando `sudo` bisogna digitare `sudo` e successivamente il comando con gli eventuali parametri.

Dato il comando, il sistema vi chiederà una password, la vostra password utente, non la password di root (a meno che non sia specificato diversamente nelle configurazioni di default in `/etc/sudoers`).

In genere `sudo` è configurato per consentire l'esecuzione di più comandi senza dover inserire ogni volta la password. In pratica è possibile impostare un lasso di tempo entro il quale sudo ricorda la password inserita.

== Configurazione di SUDO ==
----

`sudo` è configurato tramite il file `/etc/sudoers` editabile con `visudo` (simile a `vi`, con in più un controllo sintattico).
{{{
sudo visudo
{{{#!wiki important
Se viene scoperta la password di un utente abilitato all'utilizzo di '''sudo''', utenti non autorizzati potrebbero ottenere facilmente accesso totale al sistema. Infatti normalmente le password utente sono più semplici rispetto a quelle scelte per l'utente '''root'''. Per tale ragione bisogna prestare molta attenzione nella scelta delle password utente (per approfondire l'argomento consultare questa [[Sicurezza/GestionePassword|guida]]).
Linea 43: Linea 28:
Il file di configurazione `/etc/sudoers` è costituito da tre sezioni: = Utilizzi =
Linea 45: Linea 30:
    * Impostazione degli alias,  * '''[[AmministrazioneSistema/PrivilegiDiAmministrazione/Sudo|sudo]]''': guida al comando per eseguire operazioni con i privilegi di amministrazione, solitamente utilizzato nel [[AmministrazioneSistema/Terminale|terminale]].
Linea 47: Linea 32:
    * Impostazione delle opzioni di default,  * '''[[AmministrazioneSistema/PrivilegiDiAmministrazione/ApplicazioniGrafiche|Applicazioni Grafiche]]''': guida sull'utilizzo di applicazioni grafiche con i privilegi di amministrazione.
Linea 49: Linea 34:
    * Impostazione delle 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
}}}
definisce un gruppo di utenti a cui ci si potrà riferire con AMMINISTRATORI.

{{{
Cmnd_Alias UTILITY = /sbin/comando1, /usr/bin/comando2, etc..
}}}
definisce un gruppo di comandi.

{{{
Host_Alias MACCHINE = macchina1, macchina2, macchina3
}}}
definisce un gruppo di host.

=== 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:

 * `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 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 subject delle mail inviate da sudo

 * `mailto`: imposta l'indirizzo e-mail dell'utente al quale sudo inoltra le mail di segnalazione.

 * `logfile`: imposta il file di log per il logging delle operazioni
= Ulteriori risorse =
Linea 108: Linea 36:
 * etc ...

=== 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 è:
{{{
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.
[[BR]]Si 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 dell'`elenco_comandi` un punto esclamativo [!].[[BR]]Questa 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 da all'`utente1` e all'`utente2`, se connessi sulla `macchina1`, la possibilità si eseguire il `comando1` e i comandi in `/directory2`, ma non `/directory2/comando2` come `utente2`, senza richiedere la password.

== 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 home directory 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 ad usare o non usare.

 * `-i`: consente di entrare nella shell come utente target simulando il login per il nuovo utente ed 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.

== root in Ubuntu ==
----

In Ubuntu, di default, l'account root è disabilitato in modo da consigliare, al posto dell'utilizzo di `su`, l'utilizzo di `sudo`. Questa scelta è stata effettuata per motivi di sicurezza.

E' in ogni caso possibile attivare l'account di root assegnandogli una password con il 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 l'account root si può usare:
{{{
sudo passwd -l root
}}}
In questo modo l'utente root risulterà bloccato.

== Avviare applicazioni grafice con permessi di root ==
----
E' generalmente raccomandato non avviare applicazioni con i privilegi di root, ma se questo fosse necessario, non è buona norma utilizzare `sudo {GUIAPP}`, in quanto `sudo` non imposterà le variabili d'ambiente correttamente, in modo particolare in KDE. Si dovrebbe utilizzare, invece, `gksudo {GUIAPP}` o `kdesu {GUIAPP}`.

== Pssibili 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 diventano pericolosi da utilizzare. Un semplice raggiro di ciò consiste nell'abilitare l'account di root prima dell'installazione, o dell'utilizzo, di questi 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ì.
 * [wiki:Ubuntu/MattZimmerman MattZimmerman]: un semplice approccio che funziona nella maggior parte dei casi, consiste nell'utilizzare `dd`: `ls | sudo dd of=/root/file`
 * In molti uffici l'unico utente locale è l'utente root. Tutti gli altri utenti sono importati utilizzando tecniche come `nss-ldap`. Per configurare una workstation, o risolverne i problemi, nel caso di un fallimento della rete dove `nss-ldap` sia rotto, l'utente root è necessario. Questo tende a lasciare il sistema inutilizzabile.
  * [wiki:Ubuntu/JerryHaltom JerryHaltom]: in tutti questi casi si può creare un utente locale "admin" con privilegi di root e sudo.

== 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 (username 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à.
 * [[http://www.sudo.ws/|sudo]] (sito ufficiale)
 * [[https://it.wikipedia.org/wiki/Root_(utente)|Utente root]] (voce enciclopedica)
 * [[https://it.wikipedia.org/wiki/Su_(Unix)|Comando su]] (voce enciclopedica)
 * [[Sicurezza|Guida alla sicurezza in Ubuntu]]
Linea 224: Linea 42:

Questo documento è l'unione di due documenti:

 * Autore del documento: BeniaminoCaputo (Mizar)

Ringrazio swarzy per le precisazioni.

Per correzioni, estensioni e altro: [http://www.ubuntuitalia.it/index.php?option=com_simpleboard&Itemid=47&func=view&id=714&catid=10 qui]
----
Traduzioni di:[[BR]]
BlackDesert[[BR]]
MiloCasagrande[[BR]]
Documento originale: [wiki:Ubuntu/RootSudo RootSudo] {en}
CategorySicurezza CategoryAmministrazione


Guida verificata con Ubuntu: 20.04

Problemi in questa pagina? Segnalali in questa discussione

Introduzione

Nei sistemi operativi Unix e GNU/Linux c'è un utente particolare, detto super utente, contraddistinto dall'avere un UID (User ID) uguale a 0 e nome utente root, che ha accesso completo al sistema senza nessuna restrizione. Ne è quindi 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.
Ciò comporta i seguenti vantaggi:

  • Con sudo l'utente non ha la necessità di ricordare per sempre la password, anche se normalmente userà l'account root molto raramente.

  • Costringendo l'utente comune all'esecuzione controllata dei singoli comandi (mediante digitazione della password), si limitano eventuali disattenzioni nell'utilizzo degli stessi.
  • Viene mantenuto un log completo dei comandi eseguiti, permettendo l'analisi di ciò che è avvenuto nel sistema.

  • Vi è maggiore sicurezza se si ha abilitato l'account root, poiché se si utilizza su è necessario inserire due password (quella utente e quella dell'account root).

  • Quando in un sistema alcuni compiti amministrativi sono condivisi fra diversi account, l'utilizzo di sudo evita di dover dare la password di root a vari utenti.

  • L'amministratore può assegnare o revocare, a proprio piacimento, i privilegi di amministrazione a qualsiasi utente. Quindi, vi è la possibilità di assegnarli temporaneamente a un utente, per poi limitarli quando non più necessario.

Se viene scoperta la password di un utente abilitato all'utilizzo di sudo, utenti non autorizzati potrebbero ottenere facilmente accesso totale al sistema. Infatti normalmente le password utente sono più semplici rispetto a quelle scelte per l'utente root. Per tale ragione bisogna prestare molta attenzione nella scelta delle password utente (per approfondire l'argomento consultare questa guida).

Utilizzi

  • sudo: guida al comando per eseguire operazioni con i privilegi di amministrazione, solitamente utilizzato nel terminale.

  • Applicazioni Grafiche: guida sull'utilizzo di applicazioni grafiche con i privilegi di amministrazione.

Ulteriori risorse


CategorySicurezza CategoryAmministrazione