|
Dimensione: 22623
Commento:
|
Dimensione: 8071
Commento:
|
| Le cancellazioni sono segnalate in questo modo. | Le aggiunte sono segnalate in questo modo. |
| Linea 1: | Linea 1: |
| ## docs intrepid #format wiki #LANGUAGE it <<BR>> <<Indice(depth=2)>> <<Informazioni(forum="http://forum.ubuntu-it.org/viewtopic.php?f=46&t=607378"; rilasci="18.04 16.04 14.04")>> = 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 [[[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à. = 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 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. {{{#!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». }}} 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)>> = 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: ||<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''' || = 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. |
|
| Linea 192: | Linea 120: |
| Linea 209: | Linea 136: |
= 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]]. <<Anchor(definizionealias)>> == 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 }}} <<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: {{{ *** 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 [[AmministrazioneSistema/LogDiSistema|file di log]] per il logging delle operazioni. <<Anchor(autorizzazioni)>> == 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 = <<Anchor(xhost)>> == Applicazioni grafiche da root su Wayland == ## MESSAGGIO DA INSERIRE SULLE PAGINE INTERESSATE: ## ##{{{#!wiki important ##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. = Ulteriori risorse = * [[http://www.sudo.ws/|Sito ufficiale del progetto]] * [[Sicurezza|Guida alla sicurezza in Ubuntu]] ---- CategorySicurezza CategoryAmministrazione |
Avviare applicazioni grafiche con privilegi di amministrazione con Sudo
Tramite sudo con opzioni "-H" e "-i"
Innanzitutto si ricorda che, quando è necessario avviare da terminale un'applicazione grafica usando i privilegi d'amministrazione, è consigliabile evitare l'utilizzo diretto del semplice comando sudo. Infatti, anche se non si dovessero ravvisare malfunzionamenti, non impostando le variabili di ambiente in modo corretto, ne consegue che all'interno della propria Home alcuni file possano divenire proprietà di root.
Per evitare questo inconveniente, è sufficiente utilizzare il comando sudo con i parametri -H o -i.
Ad esempio per aprire il file /etc/apt/sources.list con l'editor di testo Mousepad di Xfce con i privilegi di amministrazione:
sudo -H mousepad /etc/apt/sources.list
o in alternativa:
sudo -i mousepad /etc/apt/sources.list
Si raccomanda di non chiudere l'emulatore di terminale prima di aver chiuso correttamente il programma lanciato.
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.
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.
Applicazioni grafiche con privilegi d'amministrazione con applicazione dedicata
Ubuntu 16.04 e precedenti
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 con i privilegi di amministrazione e con l'editor di testo Gedit di GNOME il file /etc/apt/sources.list: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 con i privilegi di amministrazione e con l'editor di testo Kate di KDE il file /etc/apt/sources.list:kdesudo kate /etc/apt/sources.list
lxqt-sudo: comando utilizzato su sistemi che utilizzato l'ambiente grafico LxQt. Assicurarsi di aver installato il pacchetto lxqt-sudo.
Esempio: aprire con i privilegi di amministrazione e con l'editor di testo Featherpad di LxQt il file /etc/apt/sources.list:lxqt-sudo featherpad /etc/apt/sources.list
gksudo e kdesudo sono deprecati e non più disponibili da Ubuntu 18.04.
Ubuntu 18.04 e successivi
Kubuntu
Dolphin: per avviare il file manager Dolphin come superutente:
Installare il pacchetto dolphin4.
Digitare nel terminale il comando:
sudo -H dolphin4
Il file manager Dolphin4 è la vecchia versione usata in KDE4, per questo motivo si presenta con una grafica parzialmente differente dal resto del sistema.
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.
Altri DE ('''Gnome''', '''Xfce''', '''LxQt''', ecc.)
Tramite gvfs
Metodo usato su sistemi con ambienti grafici basati su librerie GTK (GNOME, Xfce, ecc..).
Installare il pacchetto gvfs.
Esempio: Aprire con l'editor di testo gedit il file /etc/default/apport.
gedit admin:///etc/default/apport
Tramite pkexec
Programma alternativo per sudo.
Uso con comandi dati nel terminale.
Installare il pacchetto policykit-1 se non già installato.
Esempio: copiare il file /etc/apt/sources.list in /etc/apt/sources.list~:
pkexec cp /etc/apt/sources.list /etc/apt/sources.list~
Uso con applicazioni grafiche.
Creare con i privilegi di amministrazione e con un editor di testo il file /usr/share/polkit-1/actions/com.ubuntu.pkexec.«programma».policy.
Copiare in esso il seguente script XML:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE policyconfig PUBLIC "--//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN" "http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd"> <policyconfig> <action id="com.ubuntu.pkexec.sambaconfig"> <message>Authentication is required to run the «programma»</message> <icon_name>«icona»</icon_name> <defaults> <allow_any>no</allow_any> <allow_inactive>no</allow_inactive> <allow_active>auth_admin</allow_active> </defaults> <annotate key="org.freedesktop.policykit.exec.path">«comando»</annotate> <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate> </action> </policyconfig>- Salvare e chiudere il file.
Aprire con i privilegi di amministrazione e con un editor di testo il file /usr/share/applications/«nome comando».desktop
Sostituire nella riga Exec=«eseguibile» «comando», il eseguibile con pkexec.
- Salvare e chiudere il file.
Esempio: Avviare con i privilegi di amministrazione il programma GVim:
pkexec gvim
Sostituire «programma» col nome del programma grafico d'avviare come root, comando col percorso fino al comando, per esempio /usr/bin/gvim, «icona» col nome dell'icona
Tramite sudoedit
Aprire con un editor di testo il file ~/.bashrc.
Aggiungere in fondo dopo una linea vuota la stringa:
SUDO_EDITOR=nome-editor-di-testo
Sostituire nome-editor-di-testo col nome dell'editor che si vuole usare come root, esclusi Kate e Krite.
- Salvare e chiudere il file.
Tramite su-to-root
Metodo usato normalmente nei menù, usabile anche nel terminale.
Installare il pacchetto menu.
Esempio:
su-to-root -X -c 'featherpad /etc/apt/sources.list'
