3 581
contributi
mNessun oggetto della modifica |
|||
(3 versioni intermedie di 2 utenti non mostrate) | |||
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 | 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 | 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 | È '''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 | * 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 103: | Riga 103: | ||
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''). | 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 in determinate circostanze azioni privilegiate a utenti che non dispongono dei privilegi di amministrazione, come per esempio: spegnimento, riavvio, sospensione e ibernazione del sistema. | È installato su Debian con diversi profili di default, per permettere in determinate circostanze azioni privilegiate a utenti che non dispongono dei privilegi di amministrazione, come per esempio: spegnimento, riavvio, sospensione e ibernazione del sistema in assenza di altri utenti collegati. | ||
Permette anche l'esecuzione di comandi che richiedono privilegi di amministrazione, previa una forma di autenticazione. Se l'account [[root]] è attivo verrà richiesta la sua password, altrimenti se | Permette anche l'esecuzione di comandi che richiedono privilegi di amministrazione, previa una forma di autenticazione. Se l'account [[root]] è attivo e non si fa parte del gruppo ''sudo'' verrà richiesta la sua password, altrimenti se si fa parte del gruppo ''sudo'' verrà richiesta la password dell'utente corrente, in modo del tutto trasparente dalle scelte effettuate in fase di installazione. | ||
L'uso base è molto simile a <code>sudo</code>, nel senso che il comando va scritto prima di ogni comando che si vuole eseguire con privilegi, e infatti: | L'uso base è molto simile a <code>sudo</code>, nel senso che il comando va scritto prima di ogni comando che si vuole eseguire con privilegi, e infatti: | ||
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 | 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 | 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> | ||
(Si legga per maggiori informazioni: [[Introduzione all' | (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>, <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 | {{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 | 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) | ||
Riga 161: | Riga 161: | ||
=== Con ''pkexec'' === | === Con ''pkexec'' === | ||
Come per <code>sudo</code> il carattere finale del prompt rimarrà sempre '''<code>$</code>''', e in maniera analoga si scriverà <code>pkexec</code> prima di ogni comando da eseguire con privilegi: | |||
<pre>$ pkexec apt-get update | <pre>$ pkexec apt-get update | ||
(richiesta password di root/utente) | (richiesta password di root/utente) |
contributi