14376
Commento:
|
18704
|
Le cancellazioni sono segnalate in questo modo. | Le aggiunte sono segnalate in questo modo. |
Linea 1: | Linea 1: |
## docs intrepid | |
Linea 3: | Linea 4: |
[[BR]] ||<tablestyle="float:right; font-size: 0.9em; width:35%; background:#F1F1ED; margin: 0 0 1em 1em;" style="padding:0.5em;">'''Indice'''[[BR]][[TableOfContents]]|| |
<<BR>> <<Indice(depth=2)>> <<Informazioni(forum="http://forum.ubuntu-it.org/viewtopic.php?f=46&t=607378"; rilasci="18.04 16.04 14.04")>> |
Linea 8: | Linea 10: |
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'''. | Nei sistemi operativi Unix e GNU/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'''. |
Linea 12: | Linea 14: |
'''Ubuntu''' usa un sistema diverso per compiere operazioni amministrative, basato sull'utilizzo del comando '''sudo'''. | '''Ubuntu''' usa un sistema diverso per compiere operazioni amministrative, basato sull'utilizzo del comando '''sudo'''. Con '''sudo''' l'utente non ha la necessità di ricordare per sempre la password, anche se normalmente userà l'account '''root''' molto raramente. Inoltre, costringendo all'esecuzione controllata dei singoli comandi, si evitano eventuali disattenzioni nell'utilizzo degli stessi, chiedendo la password nel caso si stiano per lanciare comandi amministrativi e mantenendo un [[AmministrazioneSistema/LogDiSistema#autorizzazione|log]] completo dei comandi eseguiti, permettendo l'analisi di ciò che è avvenuto nel sistema. Di contro, se qualcuno scopre la password di un utente abilitato all'utilizzo di '''sudo''' come '''root''' in effetti può facilmente ottenere accesso totale al sistema. Normalmente, le password utente sono più semplici rispetto a quelle scelte per l'utente '''root''' e ciò può rivelarsi fonte di problemi; per tale ragione bisogna prestare molta attenzione nella scelta delle password utente. Se si ha abilitato l'account '''root''' e si utilizza '''su''', per ottenere i privilegi di amministrazione è 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 temporaneamente a qualsiasi utente privilegi particolari, eliminandoli o limitandoli quando non vi è più necessità. |
Linea 16: | Linea 24: |
'''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. | '''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 che viene con esso avviato. |
Linea 23: | Linea 31: |
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''': | 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''': |
Linea 28: | Linea 36: |
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. | 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. {{{#!wiki note Per motivi di sicurezza il terminale non mostra nessun carattere di inserimento della password. A differenza delle richieste grafiche, nel terminale non vengono mostrati nemmeno gli asterischi di mascheramento. Digitare correttamente la password e premere'' «'''Invio'''».}}} |
Linea 32: | Linea 43: |
[[Anchor(parametri)]] | <<Anchor(parametri)>> |
Linea 35: | Linea 46: |
'''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. [[Anchor(abilitare_login_root)]] = 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''' può essere lanciato con una serie di parametri che ne modificano il funzionamento temporaneamente. Quelli che seguono sono una parte delle opzioni disponibili: ||<tablestyle="width:100%" : 10% style="background-color:#cccccc;">'''Opzione''' ||<style="background-color:#cccccc;":>'''Risultato''' || ||<:>'''-H''' || imposta la variabile di sistema «'''$HOME'''» con la cartella '''Home''' dell'utente '''target''', cioè quello che eseguirà il comando, normalmente '''root'''; in maniera predefinita '''sudo''' lascia inalterata la «'''$HOME'''» || ||<:>'''-b''' || esegue il comando in background || ||<:>'''-k''' || serve a eliminare il salvataggio 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 [[AmministrazioneSistema/RigaDiComando|riga di comando]] come utente '''target''' simulando l'accesso per il nuovo utente e impostando le variabili d'ambiente; in pratica consente all'utente di ''diventare'' '''root''' e quindi non dover utilizzare '''sudo''' ad ogni successivo comando || ||<:>'''-s''' || consente di entrare nella [[AmministrazioneSistema/RigaDiComando|riga di comando]] come utente '''target'''; questa opzione è quasi identica a '''-i''', ma non imposta le variabili d'ambiente dell'utente '''target''' || <<Anchor(abilitare_login_root)>> = Abilitare l'accesso come utente root = Per impostazione predefinita in '''Ubuntu''' l'accesso come utente '''root''' è disabilitato per motivi di sicurezza. Qualora si debba usare l'utente root in maniera occasionale, è possibile utilizzarlo temporaneamente tramite il comando:{{{ sudo su }}} Se strettamente necessario, è comunque possibile abilitare l'accesso come utente '''root''' assegnandogli una password con il seguente comando:{{{ |
Linea 59: | Linea 67: |
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: {{{ |
La procedura richiede di inserire prima la password relativa a '''sudo''', quindi quella per l'utente '''root''' e la successiva conferma. Per disabilitare l'accesso come amministratore si può usare il seguente comando:{{{ |
Linea 66: | Linea 73: |
In questo modo il login come utente '''root''' risulterà nuovamente bloccato. | In questo modo l'accesso come utente '''root''' risulterà nuovamente bloccato. <<Anchor(applicazioni_grafiche)>> |
Linea 70: | Linea 78: |
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'''. |
Quando è necessario avviare da terminale un'applicazione grafica usando i privilegi d'amministrazione, è buona cosa '''evitare''' l'utilizzo diretto del semplice comando '''sudo'''. Non essendo le variabili di ambiente impostate nel modo corretto si ha la conseguenza che all'interno della propria '''Home''' alcuni file finiscano per divenire proprietà di '''root'''. Anche se non si dovessero ravvisare malfunzionamenti è comunque una pratica da evitare. {{{#!wiki tip Nel caso si fosse avviato un programma grafico tramite il semplice comando '''sudo''', consultare il [[#ripristino_permessi|seguente paragrafo]] per ripristinare la corretta configurazione dei permessi nella propria '''Home'''.}}} == gksudo, kdesudo e lxqt-sudo == * '''gksudo''' (o '''gksu'''): comando comunemente utilizzato su sistemi con ambienti grafici basati su librerie ''GTK'' ('''GNOME''', '''Xfce''', ecc..). Assicurarsi di aver [[AmministrazioneSistema/InstallareProgrammi|installato]] il pacchetto [[apt://gksu|gksu]].<<BR>>Esempio: aprire il file `/etc/apt/sources.list` con l'editor '''gedit''' di '''GNOME''' e con i privilegi di amministrazione:{{{ gksudo gedit /etc/apt/sources.list }}} * '''kdesudo''': comando utilizzato su sistemi che utilizzato l'ambiente grafico '''KDE'''. Assicurarsi di aver [[AmministrazioneSistema/InstallareProgrammi|installato]] il pacchetto [[apt://kdesudo|kdesudo]].<<BR>>Esempio: aprire il file `/etc/apt/sources.list` con l'editor '''kate''' di '''KDE''' e con i privilegi di amministrazione:{{{ kdesudo kate /etc/default/grub }}} * '''lxqt-sudo''': comando utilizzato su sistemi che utilizzato l'ambiente grafico '''!LxQt'''. Assicurarsi di aver [[AmministrazioneSistema/InstallareProgrammi|installato]] il pacchetto [[apt://lxqt-sudo|lxqt-sudo]].<<BR>>Esempio: aprire il file `/etc/apt/sources.list` con l'editor '''featherpad''' di '''!LxQt''' e con i privilegi di amministrazione:{{{ lxqt-sudo featherpad /etc/default/grub }}} == sudo con opzioni "-H" e "-i" == * '''sudo -H''' o '''sudo -i''': lanciato con i parametri '''-H''' o '''-i''' il comando '''sudo''' fa si che vengano utilizzate le corrette variabili d'ambiente e quindi senza che i permessi nella propria '''Home''' vengano alterati.<<BR>>Esempio: aprire il file `/etc/fstab` con l'editor '''mousepad''' di '''Xfce''' con i privilegi di amministrazione:{{{ sudo -H mousepad /etc/fstab }}}o in alternativa:{{{ sudo -i mousepad /etc/fstab }}} == Applicazioni grafiche con privilegi d'amministrazione in 18.04 LTS == === Kubuntu === * '''Dolphin''': per avviare il [[AmbienteGrafico/FileManager|file manager]] Dolphin come superutente: 0. [[AmministrazioneSistema/InstallareProgrammi|Installare]] il pacchetto [[apt://dolphin4 | dolphin4]]. 0. Digitare nel [[AmministrazioneSistema/Terminale|terminale]] il comando: {{{ sudo -H dolphin4 }}} * '''Kate e Kwrite''': per gli [[Ufficio/EditorDiTesto|editor di testo]] Kate e Kwrite non sono richiesti preventivamente i permessi di superutente. Pertanto viene richiesta la password solo quando viene modificato e salvato un file per il quale sono richiesti i privilegi di amministrazione. <<Anchor(ripristino_permessi)>> == Ripristino permessi Home utente == Se è stata avviata un'applicazione grafica da terminale utilizzando il semplice comando '''sudo''', nella propria '''Home''' uno o più file risulteranno proprietà di '''root'''. * Per visualizzare tali file digitare nel [[AmministrazioneSistema/RigaDiComando|terminale]] il seguente comando:{{{ find ~/ -not -user $USER }}} * Per ripristinare la corretta configurazione dei permessi nella propria '''Home''', digitare il comando:{{{ sudo chown -R $USER ~ }}}Questo farà in modo che il proprio utente torni il legittimo proprietario dei file contenuti nella propria directory. |
Linea 91: | Linea 135: |
* impostazione degli [#definizionealias alias]; * impostazione delle [#opzionidefault opzioni di default]; * impostazione delle [#autorizzazioni autorizzazioni]. [[Anchor(definizionealias)]] |
* impostazione degli [[#definizionealias|alias]]; * impostazione delle [[#opzionidefault|opzioni di default]]; * impostazione delle [[#autorizzazioni|autorizzazioni]]. <<Anchor(definizionealias)>> |
Linea 98: | Linea 142: |
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. | 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. |
Linea 105: | Linea 149: |
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: {{{ |
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. Quelli che seguono sono degli esempi: * Definire un gruppo di utenti a cui si potrà far riferimento con la dicitura «AMMINISTRATORI»{{{ |
Linea 117: | Linea 160: |
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: {{{ |
* Definire un gruppo di comandi:{{{ |
Linea 124: | Linea 163: |
La seguente istruzione definisce un gruppo di host: {{{ |
* Definire un gruppo di host:{{{ |
Linea 130: | Linea 167: |
[[Anchor(opzionidefault)]] == 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: {{{ |
<<Anchor(opzionidefault)>> == Impostazione delle opzioni predefinite == È possibile configurare il comportamento standard di '''sudo''' impostando una serie di parametri con la parola chiave «Defaults». Ci sono decine di parametri configurabili 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 corrente non è tra quelli 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; * «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: {{{ |
Linea 154: | Linea 183: |
* '''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. |
* «mailto»: imposta l'indirizzo email dell'utente al quale inoltrare le mail di segnalazione; * «logfile»: imposta il [[AmministrazioneSistema/LogDiSistema|file di log]] per il logging delle operazioni. |
Linea 159: | Linea 186: |
[[Anchor(autorizzazioni)]] | <<Anchor(autorizzazioni)>> |
Linea 162: | Linea 189: |
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: |
I comandi per l'impostazione dei privilegi definiscono quali utenti possono utilizzare quali comandi, da quali host e in che modo. La forma generale è la seguente: |
Linea 169: | Linea 196: |
* '''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 di `elenco_comandi` un punto esclamativo [!].[[BR]]Questa modalità è comunque sconsigliata in quanto è sempre possibile aggirare la negazione rinominando il comando. Esempi di autorizzazioni: {{{ |
* «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. Inoltre, si può anche inserire il nome di una directory, terminando il percorso con uno slash «/» per indicare tutti i comandi contenuti in quella directory; Con la parola chiave «NOPASSWD» è possibile può indicare a '''sudo''' che per i comandi definiti successivamente non è richiesto l'inserimento della password. Inoltre, si può negare l'esecuzione di un comando, o un gruppo di comandi, inserendo prima di «elenco_comandi» un punto esclamativo «!». Questa modalità è comunque sconsigliata in quanto è sempre possibile aggirare la negazione rinominando il comando. Quelli che seguono sono degli esempi: * Assegnare all'utente '''pippo''' qualsiasi privilegio:{{{ |
Linea 185: | Linea 208: |
assegna all'utente '''pippo''' qualsiasi privilegio; {{{ |
* Assegnare agli utenti raggruppati in «AMMINISTRATORI» i privilegi per eseguire i comandi raggruppati in «UTILITY» da qualunque host:{{{ |
Linea 190: | Linea 211: |
assegna agli utenti raggruppati in '''AMMINISTRATORI''' i privilegi per eseguire i comandi raggruppati in '''UTILITY''' da qualunque host; {{{ |
* Consentire a '''utente1''' e '''utente2''', se collegati sulla '''macchina1''', di eseguire senza inserire la password il '''comando1''' ed i comandi contenuti in {{{/directory2}}}, escludendo '''/directory2/comando2''' all'utente '''utente2''':{{{ |
Linea 195: | Linea 215: |
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à. |
= Risoluzione problemi = <<Anchor(xhost)>> == Applicazioni grafiche da root su Wayland == ## MESSAGGIO DA INSERIRE SULLE PAGINE INTERESSATE: ## ## ||<tablestyle="text-align: justify; width:100%;" style="border:none;" 5%><<Immagine(Icone/Piccole/warning.png,,center)>> ||<style="padding:0.5em; border:none;">'''Utilizzando la sessione grafica con Wayland (introdotta in Ubuntu 17.10) il programma non si avvierà. Per arginare il problema consultare la [[AmministrazioneSistema/Sudo#xhost|seguente procedura]] per l'esecuzione di applicazioni grafiche da root.'''|| ## Con la versione '''17.10''' di Ubuntu è stata introdotta la sessione grafica con [[https://it.wikipedia.org/wiki/Wayland_(protocollo)|Wayland]] accanto a quella con [[Hardware/Video/Xorg|Xorg]] (quest'ultimo rimane comunque predefinito in Ubuntu 18.04 e successive).<<BR>> Di default in una sessione con '''Wayland''' non è possibile lanciare come root programmi con interfaccia grafica ('''Synaptic''', '''GParted''', ecc.). {{{#!wiki tip Il problema non si presenta se al login viene selezionata la sessione con '''Xorg'''. Per utilizzarla, al login fare clic sull'icona a forma di ingranaggio.}}} Per ovviare a questo problema è sufficiente digitare il comando da [[AmministrazioneSistema/Terminale|terminale]]:{{{ xhost +SI:localuser:root }}} Per fare in modo che tale comando sia lanciato automaticamente all'avvio del sistema: 0. [[AmbienteGrafico/AvviareProgrammi|Avviare]] l'applicazione '''Applicazioni d'avvio'''. 0. Fare clic su '''Aggiungi''' e nella nuova finestra inserire alla voce '''Comando''':{{{ xhost +SI:localuser:root }}} 0. Fare clic su '''Salva'''. 0. Terminare la sessione e rieffettuare il login. == Ridirezione dell'output == Redirigere l'output di alcuni comandi eseguiti con '''sudo''' può portare nuovi utenti a strane conclusioni (ad esempio '''sudo ls > /root/file'''). Per raggirare tali problemi 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 aprire un terminale in con i privilegi di amministrazione e operare all'interno di esso. |
Linea 232: | Linea 250: |
* [http://www.sudo.ws/ Sito ufficiale del progetto] * [:Sicurezza:Guida alla sicurezza in Ubuntu] ## PrioritàAlta |
* [[http://www.sudo.ws/|Sito ufficiale del progetto]] * [[Sicurezza|Guida alla sicurezza in Ubuntu]] |
Linea 238: | Linea 254: |
CategorySicurezza CategoryAmministrazione CategoryDaRevisionare | CategorySicurezza CategoryAmministrazione |
Problemi in questa pagina? Segnalali in questa discussione
Introduzione
Nei sistemi operativi Unix e GNU/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. Con sudo l'utente non ha la necessità di ricordare per sempre la password, anche se normalmente userà l'account root molto raramente. Inoltre, costringendo all'esecuzione controllata dei singoli comandi, si evitano eventuali disattenzioni nell'utilizzo degli stessi, chiedendo la password nel caso si stiano per lanciare comandi amministrativi e mantenendo un log completo dei comandi eseguiti, permettendo l'analisi di ciò che è avvenuto nel sistema.
Di contro, se qualcuno scopre la password di un utente abilitato all'utilizzo di sudo come root in effetti può facilmente ottenere accesso totale al sistema. Normalmente, le password utente sono più semplici rispetto a quelle scelte per l'utente root e ciò può rivelarsi fonte di problemi; per tale ragione bisogna prestare molta attenzione nella scelta delle password utente.
Se si ha abilitato l'account root e si utilizza su, per ottenere i privilegi di amministrazione è 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 temporaneamente a qualsiasi utente privilegi particolari, eliminandoli o limitandoli quando non vi è più necessità.
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 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.
Per motivi di sicurezza il terminale non mostra nessun carattere di inserimento della password. A differenza delle richieste grafiche, nel terminale non vengono mostrati nemmeno gli asterischi di mascheramento. Digitare correttamente la password e premere «Invio».
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. Quelli che seguono sono una parte delle opzioni disponibili:
Opzione |
Risultato |
-H |
imposta la variabile di sistema «$HOME» con la cartella Home dell'utente target, cioè quello che eseguirà il comando, normalmente root; in maniera predefinita sudo lascia inalterata la «$HOME» |
-b |
esegue il comando in background |
-k |
serve a eliminare il salvataggio 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 riga di comando come utente target simulando l'accesso per il nuovo utente e impostando le variabili d'ambiente; in pratica consente all'utente di diventare root e quindi non dover utilizzare sudo ad ogni successivo comando |
-s |
consente di entrare nella riga di comando come utente target; questa opzione è quasi identica a -i, ma non imposta le variabili d'ambiente dell'utente target |
Abilitare l'accesso come utente root
Per impostazione predefinita in Ubuntu l'accesso come utente root è disabilitato per motivi di sicurezza. Qualora si debba usare l'utente root in maniera occasionale, è possibile utilizzarlo temporaneamente tramite il comando:
sudo su
Se strettamente necessario, è comunque possibile abilitare l'accesso come utente root assegnandogli una password con il seguente comando:
sudo passwd root
La procedura richiede di inserire prima la password relativa a sudo, quindi quella per l'utente root e la successiva conferma.
Per disabilitare l'accesso come amministratore si può usare il seguente comando:
sudo passwd -l root
In questo modo l'accesso 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, è buona cosa evitare l'utilizzo diretto del semplice comando sudo. Non essendo le variabili di ambiente impostate nel modo corretto si ha la conseguenza che all'interno della propria Home alcuni file finiscano per divenire proprietà di root. Anche se non si dovessero ravvisare malfunzionamenti è comunque una pratica da evitare.
Nel caso si fosse avviato un programma grafico tramite il semplice comando sudo, consultare il seguente paragrafo per ripristinare la corretta configurazione dei permessi nella propria Home.
gksudo, kdesudo e lxqt-sudo
gksudo (o gksu): comando comunemente utilizzato su sistemi con ambienti grafici basati su librerie GTK (GNOME, Xfce, ecc..). Assicurarsi di aver installato il pacchetto gksu.
Esempio: aprire il file /etc/apt/sources.list con l'editor gedit di GNOME e con i privilegi di amministrazione:gksudo gedit /etc/apt/sources.list
kdesudo: comando utilizzato su sistemi che utilizzato l'ambiente grafico KDE. Assicurarsi di aver installato il pacchetto kdesudo.
Esempio: aprire il file /etc/apt/sources.list con l'editor kate di KDE e con i privilegi di amministrazione:kdesudo kate /etc/default/grub
lxqt-sudo: comando utilizzato su sistemi che utilizzato l'ambiente grafico LxQt. Assicurarsi di aver installato il pacchetto lxqt-sudo.
Esempio: aprire il file /etc/apt/sources.list con l'editor featherpad di LxQt e con i privilegi di amministrazione:lxqt-sudo featherpad /etc/default/grub
sudo con opzioni "-H" e "-i"
sudo -H o sudo -i: lanciato con i parametri -H o -i il comando sudo fa si che vengano utilizzate le corrette variabili d'ambiente e quindi senza che i permessi nella propria Home vengano alterati.
Esempio: aprire il file /etc/fstab con l'editor mousepad di Xfce con i privilegi di amministrazione:sudo -H mousepad /etc/fstab
o in alternativa:
sudo -i mousepad /etc/fstab
Applicazioni grafiche con privilegi d'amministrazione in 18.04 LTS
Kubuntu
Dolphin: per avviare il file manager Dolphin come superutente:
Installare il pacchetto dolphin4.
Digitare nel terminale il comando:
sudo -H dolphin4
Kate e Kwrite: per gli editor di testo Kate e Kwrite non sono richiesti preventivamente i permessi di superutente. Pertanto viene richiesta la password solo quando viene modificato e salvato un file per il quale sono richiesti i privilegi di amministrazione.
Ripristino permessi Home utente
Se è stata avviata un'applicazione grafica da terminale utilizzando il semplice comando sudo, nella propria Home uno o più file risulteranno proprietà di root.
Per visualizzare tali file digitare nel terminale il seguente comando:
find ~/ -not -user $USER
Per ripristinare la corretta configurazione dei permessi nella propria Home, digitare il comando:
sudo chown -R $USER ~
Questo farà in modo che il proprio utente torni il legittimo proprietario dei file contenuti nella propria directory.
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 alias;
impostazione delle opzioni di default;
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.
Quelli che seguono sono degli esempi:
Definire un gruppo di utenti a cui si potrà far riferimento con la dicitura «AMMINISTRATORI»
User_Alias AMMINISTRATORI = utente1, utente2, utente3
Definire un gruppo di comandi:
Cmnd_Alias UTILITY = /sbin/comando1, /usr/bin/comando2, etc..
Definire un gruppo di host:
Host_Alias MACCHINE = macchina1, macchina2, macchina3
Impostazione delle opzioni predefinite
È possibile configurare il comportamento standard di sudo impostando una serie di parametri con la parola chiave «Defaults».
Ci sono decine di parametri configurabili 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 corrente non è tra quelli 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;
- «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 inoltrare le mail di segnalazione;
«logfile»: imposta il 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 generale è 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. Inoltre, si può anche inserire il nome di una directory, terminando il percorso con uno slash «/» per indicare tutti i comandi contenuti in quella directory;
Con la parola chiave «NOPASSWD» è possibile può indicare a sudo che per i comandi definiti successivamente non è richiesto l'inserimento della password. Inoltre, si può negare l'esecuzione di un comando, o un gruppo di comandi, inserendo prima di «elenco_comandi» un punto esclamativo «!». Questa modalità è comunque sconsigliata in quanto è sempre possibile aggirare la negazione rinominando il comando.
Quelli che seguono sono degli esempi:
Assegnare all'utente pippo qualsiasi privilegio:
pippo ALL = (ALL) ALL
Assegnare agli utenti raggruppati in «AMMINISTRATORI» i privilegi per eseguire i comandi raggruppati in «UTILITY» da qualunque host:
AMMINISTRATORI ALL = UTILITY
Consentire a utente1 e utente2, se collegati sulla macchina1, di eseguire senza inserire la password il comando1 ed i comandi contenuti in /directory2, escludendo /directory2/comando2 all'utente utente2:
utente1,utente2 macchina1 = (utente2) NOPASSWD: /directory1/comando1, /directory2/, !/directory2/comando2
Risoluzione problemi
Applicazioni grafiche da root su Wayland
Con la versione 17.10 di Ubuntu è stata introdotta la sessione grafica con Wayland accanto a quella con Xorg (quest'ultimo rimane comunque predefinito in Ubuntu 18.04 e successive).
Di default in una sessione con Wayland non è possibile lanciare come root programmi con interfaccia grafica (Synaptic, GParted, ecc.).
Il problema non si presenta se al login viene selezionata la sessione con Xorg. Per utilizzarla, al login fare clic sull'icona a forma di ingranaggio.
Per ovviare a questo problema è sufficiente digitare il comando da terminale:
xhost +SI:localuser:root
Per fare in modo che tale comando sia lanciato automaticamente all'avvio del sistema:
Avviare l'applicazione Applicazioni d'avvio.
Fare clic su Aggiungi e nella nuova finestra inserire alla voce Comando:
xhost +SI:localuser:root
Fare clic su Salva.
- Terminare la sessione e rieffettuare il login.
Ridirezione dell'output
Redirigere l'output di alcuni comandi eseguiti con sudo può portare nuovi utenti a strane conclusioni (ad esempio sudo ls > /root/file). Per raggirare tali problemi si può utilizzare sudo sh -c 'ls > /root/file', utilizzando Adverbio o semplicemente utilizzando sudo -s per aprire un terminale in con i privilegi di amministrazione e operare all'interno di esso.