3 581
contributi
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 | 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 | 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 | 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' | 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 | # '''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 | È 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 | 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 | È '''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 | * 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 | 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 | 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. | ||
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 | 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 | 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. | ||
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 | 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> | 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]] | |Autore= [[Utente:HAL 9000|HAL 9000]] 20:26, 24 apr 2015 (CEST) | ||
|Verificata_da= | |Verificata_da= | ||
|Numero_revisori=0 | |Numero_revisori=0 |
contributi