Privilegi di amministrazione: differenze tra le versioni

Vai alla navigazione Vai alla ricerca
aggiunto pkexec
m (ha spostato Privilegi di amministratore a Privilegi di amministrazione: creazione automatica redirect)
(aggiunto pkexec)
Riga 1: Riga 1:
{{Versioni compatibili}}
{{Versioni compatibili}}
== Introduzione ==
== Introduzione ==
I privilegi di amministratore (detti anche ''privilegi di root'') permettono di svolgere qualsiasi operazione, dall'alterazione e la cancellazione di qualsiasi file al controllo di tutte le risorse del sistema. E su sistemi operativi Unix e Unix-like, come lo è GNU/Linux Debian, questi privilegi sono assegnati all'utente con [[UID]] pari a '''0''', ossia all'utente [[root]].
I privilegi di amministrazione (detti anche ''privilegi di root'') permettono di svolgere qualsiasi operazione, dall'alterazione e la cancellazione di qualsiasi file al controllo di tutte le risorse del sistema. E su sistemi operativi Unix e Unix-like, come lo è GNU/Linux Debian, questi privilegi sono assegnati all'utente con [[UID]] pari a '''0''', ossia all'utente [[root]].


In tutta questa wiki, e tradizionalmente per Debian e la maggior parte delle distribuzioni GNU/Linux, si utilizza il carattere di prompt (che non va digitato, ed è già presente nel terminale o nella console virtuale utilizzata) per indicare quali comandi vanno eseguiti con privilegi:
In tutta questa Wiki, e tradizionalmente per Debian e la maggior parte delle distribuzioni GNU/Linux, si utilizza il carattere di prompt (che non va digitato, ed è già presente nel terminale o nella console virtuale utilizzata) per indicare quali comandi vanno eseguiti con privilegi:
* '''<code>$</code>''': il comando che segue è utilizzabile da tutti gli utenti;
* '''<code>$</code>''': il comando che segue è utilizzabile da tutti gli utenti;
* '''<code>#</code>''': sono richiesti i privilegi di root.
* '''<code>#</code>''': sono richiesti i privilegi di root.
Riga 9: Riga 9:
Per esempio:
Per esempio:
<pre># apt-get update</pre>
<pre># apt-get update</pre>
significa che il comando (<code>apt-get update</code>) dev'essere eseguito con privilegi di amministratore.
significa che il comando (<code>apt-get update</code>) dev'essere eseguito con privilegi di amministrazione.


== Avvertenze ==
== Avvertenze ==
È '''altamente sconsigliato''' accedere al sistema come utente '''root''' per effettuare attività ordinarie. Invece i suoi privilegi andrebbero impiegati esclusivamente per lo stretto necessario a svolgere attività di amministrazione, quali per esempio l'installazione, l'aggiornamento o la rimozione di software tramite [[APT]], o per modificare i file di configurazione del sistema.
È '''altamente sconsigliato''' accedere al sistema come utente '''root''' per effettuare attività ordinarie. Invece i suoi privilegi andrebbero impiegati esclusivamente per lo stretto necessario a svolgere attività di amministrazione, quali per esempio l'installazione, l'aggiornamento o la rimozione di software tramite [[APT]], o per modificare i file di configurazione del sistema.


Ovviamente si deve scegliere una buona password per l'amministratore, considerando che è l'unico metodo di autenticazione previsto di default, e ne va preservata la riservatezza. Si legga per maggiori informazioni [[Password sicure: la base della sicurezza informatica|questa guida]].
Ovviamente si deve scegliere una buona password per l'account utilizzato per l'amministrazione, considerando che è l'unico metodo di autenticazione previsto di default, e ne va preservata la riservatezza. Si legga per maggiori informazioni [[Password sicure: la base della sicurezza informatica|questa guida]].


Inoltre si raccomanda di:
Inoltre si raccomanda di:
# '''non''' eseguire applicazioni sconosciute come amministratore, e rifiutarsi di inserire la password necessaria per ottenerne i privilegi;
# '''non''' eseguire applicazioni sconosciute con privilegi, e rifiutarsi di inserire la password necessaria per ottenerli per attività per cui non sono previsti;
# '''non''' installare software esterno ad [[APT]], in qualsiasi forma (anche di [[pacchetto|pacchetto Debian]]), senza essersi accertati della sua autenticità;
# '''non''' installare software esterno ad [[APT]], in qualsiasi forma (anche di [[pacchetto|pacchetto Debian]]), senza essersi accertati della sua autenticità;
# '''non''' aggiungere [[repository]] non ufficiali senza controllarne l'autenticità e senza averne un reale bisogno, limitandone il numero il più possibile ed evitando assolutamente liste di repository di terze parti;
# '''non''' aggiungere [[repository]] non ufficiali senza controllarne l'autenticità e senza averne un reale bisogno, limitandone il numero il più possibile ed evitando assolutamente liste di repository di terze parti;
Riga 27: Riga 27:
Con le impostazioni di default l'account dell'utente '''root''' è abilitato, e la sua password è richiesta per svolgere attività di amministrazione.
Con le impostazioni di default l'account dell'utente '''root''' è abilitato, e la sua password è richiesta per svolgere attività di amministrazione.


È comunque possibile non abilitarlo durante l'installazione, o anche disabilitarlo in seguito. In tal caso '''non''' si possono utilizzare i metodi esposti in questa sezione per ottenere i '''privilegi di amministratore'''.
È comunque possibile non abilitarlo durante l'installazione, o anche disabilitarlo in seguito. In tal caso '''non''' si possono utilizzare i metodi esposti in questa sezione per ottenere i '''privilegi di amministrazione'''.


==== Utilizzo di ''su'' ====
==== Utilizzo di ''su'' ====
Riga 59: Riga 59:
oppure ancora più velocemente premere <code>Ctrl-d</code>.
oppure ancora più velocemente premere <code>Ctrl-d</code>.


Nei comandi riportati in tutta questa Wiki, e in generale nella documentazione di tutti i sistemi Unix, il prompt è riportato prima di ogni comando da digitare per indicare se richiede o meno i privilegi di amministratore.
Nei comandi riportati in tutta questa Wiki, e in generale nella documentazione di tutti i sistemi Unix, il prompt è riportato prima di ogni comando da digitare per indicare se richiede o meno i privilegi di amministrazione.


==== Login diretto come ''root'' ====
==== Login diretto come ''root'' ====
Un'altra possibilità è effettuare direttamente un login come [[root]], solo per lo stretto necessario a svolgere l'attività di amministrazione.
Un'altra possibilità è effettuare direttamente un login come [[root]], solo per lo stretto necessario a svolgere l'attività di amministrazione.


È '''sconsigliato''' effettuare un login da interfaccia grafica, per via dell'elevato numero di applicazioni che riceverebbero i privilegi di amministratore. Si può invece passare a una console virtuale non utilizzata (per esempio '''/dev/tty2'''), effettuare il login come '''root''', eseguire i soli comandi per cui sono necessari i privilegi di amministratore e poi effettuare subito dopo il logout, ritornando alla propria console virtuale o comunque a quella utilizzata dal server grafico.
È '''sconsigliato''' effettuare un login da interfaccia grafica, per via dell'elevato numero di applicazioni che riceverebbero i privilegi di amministrazione. Si può invece passare a una console virtuale non utilizzata (per esempio '''/dev/tty2'''), effettuare il login come '''root''', eseguire i soli comandi per cui sono necessari i privilegi di amministrazione e poi effettuare subito dopo il logout, ritornando alla propria console virtuale o comunque a quella utilizzata dal server grafico.


Per esempio, ecco la procedura per passi (leggerla '''tutta''' prima di provarla!):
Per esempio, ecco la procedura per passi (leggerla '''tutta''' prima di provarla!):
Riga 70: Riga 70:
* (in presenza di più persone con accesso al sistema, o se la console '''tty2''' è stata usata in precedenza) inviare la combinazione '''SysRq+K''' premendo <code>Alt-RSist-k</code> (oppure <code>Alt-Stamp-k</code>) per generare una nuova console sicura, terminando tutte le eventuali applicazioni collegate;
* (in presenza di più persone con accesso al sistema, o se la console '''tty2''' è stata usata in precedenza) inviare la combinazione '''SysRq+K''' premendo <code>Alt-RSist-k</code> (oppure <code>Alt-Stamp-k</code>) per generare una nuova console sicura, terminando tutte le eventuali applicazioni collegate;
* effettuare il login con '''root''' e la password corrispondente;  
* effettuare il login con '''root''' e la password corrispondente;  
* digitare i comandi che richiedono privilegi di amministratore, e soltanto quelli ('''non''' usare la [[shell]] per altre attività!);
* digitare i comandi che richiedono privilegi di amministrazione, e soltanto quelli ('''non''' usare la [[shell]] per altre attività!);
* uscire con <code>exit</code> o premendo <code>Ctrl-d</code> per terminare la shell;
* uscire con <code>exit</code> o premendo <code>Ctrl-d</code> per terminare la shell;
* premere <code>Alt-FrecciaSinistra</code> per passare alla console precedente, e ripetere fino a tornare a quella di partenza o eventualmente al proprio server grafico.
* premere <code>Alt-FrecciaSinistra</code> per passare alla console precedente, e ripetere fino a tornare a quella di partenza o eventualmente al proprio server grafico.
Riga 77: Riga 77:


=== Senza account ''root'' ===
=== Senza account ''root'' ===
Se durante l'installazione si ha disabilitato l'account '''root''', il primo utente creato è stato automaticamente aggiunto al gruppo '''sudo'''. In tal caso l'unico modo per ottenere '''privilegi di amministratore''' è tramite [[sudo]].
Se durante l'installazione si ha disabilitato l'account '''root''', il primo utente creato è stato automaticamente aggiunto al gruppo '''sudo'''. In tal caso l'unico modo per ottenere '''privilegi di amministrazione''' è tramite [[sudo]].


In presenza di più persone con incarichi di amministrazione è fondamentale, per non dover condividere la stessa password e permettere il log dei comandi eseguiti da ciascuna, mentre in presenza di un unico utente è soltanto un modo per doversi ricordare un'unica password, salvo modifiche della configurazione di default.
In presenza di più persone con incarichi di amministrazione è fondamentale, per non dover condividere la stessa password e permettere il log dei comandi eseguiti da ciascuna, mentre in presenza di un unico utente è soltanto un modo per doversi ricordare un'unica password, salvo modifiche della configurazione di default.
Riga 84: Riga 84:
'''Sudo''' può essere usato per eseguire un comando come utente [[root]], tramite la richiesta della password dell'utente che esegue il comando, se ha i permessi necessari.
'''Sudo''' può essere usato per eseguire un comando come utente [[root]], tramite la richiesta della password dell'utente che esegue il comando, se ha i permessi necessari.


Solitamente, se installato e configurato, si scrive [[sudo]] prima di ogni comando da eseguire come amministratore. <br/>
Solitamente, se installato e configurato, si scrive [[sudo]] prima di ogni comando da eseguire con privilegi di amministrazione. <br/>
Per esempio:
Per esempio:
<pre>
<pre>
Riga 102: Riga 102:


Per maggiori informazioni si rimanda alla guida: [[Configurare SUDO per gestire le attività degli amministratori]]
Per maggiori informazioni si rimanda alla guida: [[Configurare SUDO per gestire le attività degli amministratori]]
=== Con polkit ===
Se si è installato uno degli ambienti desktop oppure direttamente il pacchetto '''policykit-1''', che ne è una dipendenza, si può utilizzare il framework di sicurezza ''polkit'' tramite il comando <code>pkexec</code> (azione: ''org.freedesktop.policykit.exec'').
È installato su Debian con diversi profili di default, per permettere azioni privilegiate a utenti che non dispongono dei privilegi di amministrazione, e permette anche l'esecuzione di comandi che richiedono privilegi di amministrazione. Se è stato attivato l'account [[root]] verrà richiesta la sua password, altrimenti se si è configurato <code>sudo</code> e si fa parte dell'omonimo gruppo verrà richiesta la password dell'utente corrente, in modo trasparente dalle scelte effettuate in fase di installazione.
L'uso è equivalente a <code>sudo</code>, nel senso che il comando va scritto prima di ogni comando che si vuole eseguire con privilegi, e infatti:
<pre>
$ pkexec id -u
</pre>
restituisce '''0''', ossia l'[[UID]] di [[root]], dopo aver richiesto la password necessaria per ottenere i privilegi.
Rispetto a <code>su</code> e <code>sudo</code>, <code>pkexec</code> mostra sempre il comando per cui sono richiesti i privilegi assieme alla richiesta di password, sia in presenza di interfaccia grafica che da console virtuale.


==== Eseguibili con ''setuid'' ====
==== Eseguibili con ''setuid'' ====
{{Warningbox | Questa sezione ha solo scopo didattico, ed è trattata per completezza. Non si dovrebbe '''mai''' ricorrere a tale permesso soltanto per evitare l'autenticazione di un proprio eseguibile, se non si è più che certi di quello che si sta facendo e non è possibile fare altrimenti.
{{Warningbox | Questa sezione ha solo scopo didattico, ed è trattata per completezza. Non si dovrebbe '''mai''' ricorrere a tale permesso soltanto per evitare l'autenticazione di un proprio eseguibile, se non si è più che certi di quello che si sta facendo e non è possibile fare altrimenti.


Un amministratore non dovrebbe '''mai''' avere la necessità di assegnare ''setuid'' a un programma!}}
Chi si occupa dell'amministrazione non dovrebbe '''mai''' avere la necessità di assegnare ''setuid'' a un programma! È un compito che spetta soltanto a uno sviluppatore, e soltanto in seguito a un'attenta analisi sulle implicazioni sulla sicurezza.}}


Un eseguibile con tale permesso abilitato, anziché ereditare i privilegi dell'utente che lo avvia, è eseguito con quelli del suo proprietario, '''senza nessuna richiesta di autenticazione'''. Ne consegue che un programma appartenente a [[root]] con ''setuid'' è sempre eseguito con '''privilegi di amministratore''' da chiunque abbia il permesso di esecuzione.
Un eseguibile con tale permesso abilitato, anziché ereditare i privilegi dell'utente che lo avvia, è eseguito con quelli del suo proprietario, '''senza nessuna richiesta di autenticazione'''. Ne consegue che un programma appartenente a [[root]] con ''setuid'' è sempre eseguito con '''privilegi di amministrazione''' da chiunque abbia il permesso di esecuzione.


Per maggiori informazioni si rimanda alla guida: [[Filesystem: i permessi sui files]]
Per maggiori informazioni si rimanda alla guida: [[Filesystem: i permessi sui files]]
Riga 114: Riga 127:
Per ovvie ragioni '''è estremamente pericoloso''' aggiungere tale permesso a eseguibili che ne sono sprovvisti, e rimuoverlo dai comandi di sistema che lo richiedono può ridurre o anche compromettere le funzionalità del sistema.
Per ovvie ragioni '''è estremamente pericoloso''' aggiungere tale permesso a eseguibili che ne sono sprovvisti, e rimuoverlo dai comandi di sistema che lo richiedono può ridurre o anche compromettere le funzionalità del sistema.


Si noti che entrambi <code>su</code> e <code>sudo</code> per ottenere i privilegi di amministratore fanno uso di questo permesso, senza il quale non potrebbero funzionare per i normali utenti. E sono stati creati proprio per permettere ad altri programmi di essere eseguiti con privilegi, tramite una forma di autenticazione, in modo controllato e sicuro.
Si noti che <code>su</code>, <code>sudo</code> e <code>pkexec</code> per concedere i privilegi di amministrazione fanno uso di questo permesso, senza il quale non potrebbero funzionare per i normali utenti. E sono stati creati proprio per permettere ad altri programmi di essere eseguiti con privilegi, tramite una forma di autenticazione, in modo controllato e sicuro.


Per ragioni di sicurezza il permesso ''setuid'' è ignorato sugli script. E tutte le unità rimovibili, se montate da un utente normale, di default possono esserlo soltanto con il flag '''nosuid''' attivo, che renderebbe il permesso ''setuid'' privo di efficacia.
Inoltre, per ragioni di sicurezza, il permesso ''setuid'' è ignorato sugli script. E tutte le unità rimovibili, se montate da un utente normale, di default possono esserlo soltanto con il flag '''nosuid''' attivo, che renderebbe il permesso ''setuid'' privo di efficacia.


== Esempio: aggiornamento periodico del sistema ==
== Esempio: aggiornamento periodico del sistema ==
Per effettuare l'aggiornamento periodico del sistema su una Debian [[stable]], i comandi da digitare in una console virtuale o un emulatore di terminale con '''privilegi di amministratore''' sono:
Per effettuare l'aggiornamento periodico del sistema su una Debian [[stable]], i comandi da digitare in una console virtuale o un emulatore di terminale con '''privilegi di amministrazione''' sono:
<pre># apt-get update
<pre># apt-get update
# apt-get upgrade</pre>
# apt-get upgrade</pre>
(Si legga per maggiori informazioni: [[Introduzione all' Apt System]])
(Si legga per maggiori informazioni: [[Introduzione all' Apt System]])


Nelle sezioni successive è mostrato brevemente come eseguire questi comandi in modo privilegiato con <code>su</code> e <code>sudo</code>.
Nelle sezioni successive è mostrato brevemente come eseguire questi comandi in modo privilegiato con <code>su</code>, <code>sudo</code> e <code>pkexec</code>.


{{Box | Login diretto come root | Si noti che effettuando un login diretto come [[root]] su una console virtuale, ovviamente possibile solo con account root attivo, il carattere finale del prompt sarà sempre '''<code>#</code>''' e basterà quindi digitare i due comandi e poi uscire dalla console (premendo <code>Ctrl-d</code>)}}.
{{Box | Login diretto come root | Si noti che effettuando un login diretto come [[root]] su una console virtuale, ovviamente possibile solo con account root attivo, il carattere finale del prompt sarà sempre '''<code>#</code>''' e basterà quindi digitare i due comandi e poi uscire dalla console (premendo <code>Ctrl-d</code>.)}}


=== Con account root attivo e su ===
=== Con account root attivo e su ===
Riga 147: Riga 160:
Dopo il secondo comando non dovrebbe essere richiesta alcuna password, salvo cambiamenti al valore di default del timeout o se si è atteso troppo tra un comando e il successivo. Inoltre nuovi comandi potranno essere digitati sulla stessa console o terminale con <code>sudo</code> fino allo scadere del timeout, a meno che venga chiusa (premendo <code>Ctrl-d</code>) o sia invalidata con:
Dopo il secondo comando non dovrebbe essere richiesta alcuna password, salvo cambiamenti al valore di default del timeout o se si è atteso troppo tra un comando e il successivo. Inoltre nuovi comandi potranno essere digitati sulla stessa console o terminale con <code>sudo</code> fino allo scadere del timeout, a meno che venga chiusa (premendo <code>Ctrl-d</code>) o sia invalidata con:
<pre>$ sudo -k</pre>
<pre>$ sudo -k</pre>
=== Con pkexec ===
Se si è abilitato l'account root, verrà richiesta la sua password, altrimenti verrà richiesta la propria (se si fa parte del gruppo ''sudo''). In entrambi i casi come per <code>sudo</code> il carattere finale del prompt rimarrà sempre '''<code>$</code>''', e si scriverà il comando <code>pkexec</code> prima di ogni comando da eseguire con privilegi:
<pre>$ pkexec apt-get update
(richiesta password di root/utente)
$ pkexec apt-get upgrade
(richiesta password di root/utente)
</pre>
Fa parte del framework di autenticazione ''polkit'', presente di default in ogni ambiente desktop.


== Approfondimento ==
== Approfondimento ==
<code>man su</code><br/>
<code>man su</code><br/>
<code>man sudo</code>
<code>man sudo</code><br/>
<code>man pkexec</code>


{{Autori
{{Autori
|Autore= [[Utente:HAL 9000|HAL 9000]] 11:21, 19 apr 2015 (CEST)
|Autore= [[Utente:HAL 9000|HAL 9000]] 20:26, 24 apr 2015 (CEST)
|Verificata_da=
|Verificata_da=
|Numero_revisori=0
|Numero_revisori=0
3 581

contributi

Menu di navigazione