Privilegi di amministrazione: differenze tra le versioni

m
nessun oggetto della modifica
mNessun oggetto della modifica
mNessun oggetto della modifica
Riga 3: Riga 3:
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]].
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 virtuale o nell'emulatore di terminale) 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 47: Riga 47:
''(che identifica sempre l'utente root)''
''(che identifica sempre l'utente root)''


Per essere precisi è stata avviata una nuova [[shell]] di login, e le è stato assegnato il controllo della console virtuale o del terminale (all'interno di una sessione grafica) utilizzato.<br/>
Per essere precisi è stata avviata una nuova [[shell]] di login, e le è stato assegnato il controllo del terminale virtuale o dell'emulatore di terminale (all'interno di una sessione grafica) utilizzato.<br/>
L'opzione <code>-</code> (''trattino'', oppure nelle forme <code>-l</code> e <code>--login</code>) dopo il comando <code>su</code> serve appunto ad avviare una shell di login, che utilizza un ambiente pulito, ereditando soltanto le variabili d'ambiente <code>$TERM</code>, <code>$COLORTERM</code>, <code>$DISPLAY</code> e <code>$XAUTHORITY</code>. Queste ultime due permettono a [[root]] di accedere al server grafico associato all'utente che ha invocato <code>su</code>, se presente e attivo.<br/>
L'opzione <code>-</code> (''trattino'', oppure nelle forme <code>-l</code> e <code>--login</code>) dopo il comando <code>su</code> serve appunto ad avviare una shell di login, che utilizza un ambiente pulito, ereditando soltanto le variabili d'ambiente <code>$TERM</code>, <code>$COLORTERM</code>, <code>$DISPLAY</code> e <code>$XAUTHORITY</code>. Queste ultime due permettono a [[root]] di accedere al server grafico associato all'utente che ha invocato <code>su</code>, se presente e attivo.<br/>
Alcune variabili d'ambiente però non sono mai ereditate (<code>$HOME</code>, <code>$SHELL</code>, <code>$USER</code>, <code>$LOGNAME</code>, <code>$PATH</code> e <code>$IFS</code>) ed altre (come <code>$LD_PRELOAD</code> e <code>$LD_DEBUG_OUTPUT</code>) non hanno effetto per ragioni di sicurezza.
Alcune variabili d'ambiente però non sono mai ereditate (<code>$HOME</code>, <code>$SHELL</code>, <code>$USER</code>, <code>$LOGNAME</code>, <code>$PATH</code> e <code>$IFS</code>) ed altre (come <code>$LD_PRELOAD</code> e <code>$LD_DEBUG_OUTPUT</code>) non hanno effetto per ragioni di sicurezza.
Riga 64: Riga 64:
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 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.
È '''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 un terminale virtuale non utilizzato (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 al proprio terminale virtuale o comunque a quello utilizzato 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!):
* premere <code>Ctrl-Alt-F2</code> per passare a '''tty2''' (oppure <code>Ctrl-Alt-F3</code> per '''tty3''', ecc... ; basta che la console virtuale sia libera);
* premere <code>Ctrl-Alt-F2</code> per passare a '''tty2''' (oppure <code>Ctrl-Alt-F3</code> per '''tty3''', ecc... ; basta che il terminale virtuale sia libero);
* (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;  
Riga 113: Riga 113:
restituisce '''0''', ossia l'[[UID]] di [[root]], dopo aver richiesto la password necessaria per ottenere i privilegi.
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> però, <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. Si noti che, salvo personalizzazione dei file di configurazione di ''polkit'', di default è richiesto che l'account root sia attivo oppure che si appartenga al gruppo ''sudo'', altrimenti sarà impossibile essere autenticati.
Rispetto a <code>su</code> e <code>sudo</code> però, <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 terminale virtuale. Si noti che, salvo personalizzazione dei file di configurazione di ''polkit'', di default è richiesto che l'account root sia attivo oppure che si appartenga al gruppo ''sudo'', altrimenti sarà impossibile essere autenticati.


=== Eseguibili con ''setuid'' ===
=== Eseguibili con ''setuid'' ===
Riga 131: Riga 131:


== 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 amministrazione''' sono:
Per effettuare l'aggiornamento periodico del sistema su una Debian [[stable]], i comandi da digitare in un terminale virtuale o in 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>
Riga 138: Riga 138:
Nelle sezioni successive è mostrato brevemente come eseguire questi comandi in modo privilegiato con <code>su</code>, <code>sudo</code> e <code>pkexec</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 un terminale 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'' ===
Si avvia una console virtuale o un emulatore di terminale (in ambiente grafico) e si ottengono i privilegi con <code>su</code>:
Si avvia un terminale virtuale o un emulatore di terminale (in ambiente grafico) e si ottengono i privilegi con <code>su</code>:
<pre>$ su -
<pre>$ su -
(richiesta password di root, non stampata a schermo, e INVIO)
(richiesta password di root, non stampata a schermo, e INVIO)
3 581

contributi