Privilegi di amministrazione: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
mNessun oggetto della modifica
(estese sezioni)
Riga 8: Riga 8:
su -
su -
</pre>
</pre>
Verrà richiesta la password di '''root''' e sarà eseguito l’accesso.
Verrà richiesta la password di '''root''' e sarà eseguito l’accesso. È necessario però che il suo account sia attivo, e lo è con un'installazione con le impostazioni di default.


Noterete che il prompt della [[shell]] è cambiato, passando da:
Noterete che il prompt della [[shell]] è cambiato, passando da:
Riga 22: Riga 22:


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 della console virtuale o del terminale (all'interno di una sessione grafica) utilizzato.<br/>
L'opzione (''trattino'') <code>-</code> (anche 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 36: Riga 36:




Un'altra possibilità è effettuare direttamente un login come [[root]] per lo stretto necessario a eseguire i comandi che richiedono i privilegi di amministratore. È '''sconsigliato''' da interfaccia grafica, per via dell'elevato numero di applicazioni che riceverebbero tali privilegi.
Un'altra possibilità è effettuare direttamente un login come [[root]] per lo stretto necessario a eseguire i comandi che richiedono i privilegi di amministratore. Ovviamente anche questo metodo richiede che l'account di '''root''' sia attivo.


Si può invece passare a una console virtuale non utilizzata (per esempio '''/dev/tty1'''), effettuare il login come '''root''', eseguire i soli comandi per cui sono necessari i privilegi di amministratore e poi effetuare 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 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 effetuare subito dopo il logout, ritornando alla propria console virtuale o comunque a quella utilizzata dal server grafico.


Per esempio, ecco la procedura per passi:
Per esempio, ecco la procedura per passi:
* digitare <code>Ctrl-Alt-F1</code> per passare a '''tty1''';
* premere <code>Ctrl-Alt-F2</code> per passare a '''tty2''';
* inviare la combinazione '''SysRq+K''' digitando <code>Alt-R Sist-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-R Sist-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 amministratore, e soltanto quelli ('''non''' usare la [[shell]] per altre attività!);
* uscire con <code>exit</code> per terminare la shell;
* uscire con <code>exit</code> o premendo <code>Ctrl-d</code> per terminare la shell;
* digitare <code>Alt-Freccia destra</code> per passare alla console successiva, e ripetere fino a tornare a quella di partenza.<br/>
* 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.
Questo metodo, anche se molto più laborioso degli altri, è l'unico sicuro se l'account dell'utente utilizzato per <code>su</code> o <code>sudo</code> è stato compromesso, e ha il vantaggio di appoggiarsi unicamente sulla sicurezza del sistema.


Questo metodo, anche se molto più laborioso degli altri, è l'unico sempre '''sicuro''' anche se l'account dell'utente utilizzato per eseguire <code>su</code> o <code>sudo</code> fosse stato compromesso, perché ha il vantaggio di appoggiarsi unicamente sulla sicurezza del sistema.
Come ultima alternativa, è possibile anche ricorrere a [[sudo]] allo scopo di eseguire un comando come utente [[root]], che di default chiede la propria password, contrariamente a <code>su</code>. Solitamente, se installato e configurato, si scrive [[sudo]] prima di ogni comando da eseguire come amministratore.
Se durante l'installazione si ha disabilitato l'account '''root''', l'utente creato è stato automaticamente aggiunto al gruppo '''sudo''' e questo è l'unico modo per ottenere '''privilegi di amministratore'''.


Come ultima alternativa, è possibile anche ricorrere a [[sudo]] allo scopo di eseguire un comando come utente [[root]], che di default chiede la propria password, contrariamente a <code>su</code>. Solitamente, dopo averlo installato e configurato, si scrive [[sudo]] prima di ogni comando da eseguire come amministratore.<br/>
Per esempio:
Per esempio:
<pre>
<pre>

Versione delle 16:45, 1 set 2014

I privilegi di amministratore permettono di svolgere qualsiasi operazione nel 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 tradizionalmente all'utente root.

È altamente sconsigliato accedere al sistema come tale utente per effettuare attività ordinarie, per via dei privilegi associati. Pertanto andrebbe utilizzato 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 cambiare i file di configurazione del sistema.


Una volta effettuato il login con il proprio utente non privilegiato, il metodo classico su Debian per poter diventare root ed avere quindi la possibilità di svolgere operazioni di amministrazione, è quello di eseguire il comando su (Switch User):

su -

Verrà richiesta la password di root e sarà eseguito l’accesso. È necessario però che il suo account sia attivo, e lo è con un'installazione con le impostazioni di default.

Noterete che il prompt della shell è cambiato, passando da:

$

(che identifica un utente normale) (alcune shell, come zsh, potrebbero utilizzare il simbolo % al posto di $)
a:

#

(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.
L'opzione - (trattino, oppure nelle forme -l e --login) dopo il comando su serve appunto ad avviare una shell di login, che utilizza un ambiente pulito, ereditando soltanto le variabili d'ambiente $TERM, $COLORTERM, $DISPLAY e $XAUTHORITY. Queste ultime due permettono a root di accedere al server grafico associato all'utente che ha invocato su, se presente e attivo.
Alcune variabili d'ambiente però non sono mai ereditate ($HOME, $SHELL, $USER, $LOGNAME, $PATH e $IFS) ed altre (come $LD_PRELOAD e $LD_DEBUG_OUTPUT) non hanno effetto per ragioni di sicurezza.

Si ricordi sempre comunque che può essere insicuro utilizzare su senza una di queste tre opzioni, con il significato equivalente: -, -l, --login .

Per ritornare utenti normali è necessario terminare la shell, così che il controllo ritorni a quella che si utilizzava precedentemente, con i soli privilegi di utente. Quindi basta digitare il comando:

exit

oppure ancora più velocemente premere CTRL-d.

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.


Un'altra possibilità è effettuare direttamente un login come root per lo stretto necessario a eseguire i comandi che richiedono i privilegi di amministratore. Ovviamente anche questo metodo richiede che l'account di root sia attivo.

È 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 effetuare subito dopo il logout, ritornando alla propria console virtuale o comunque a quella utilizzata dal server grafico.

Per esempio, ecco la procedura per passi:

  • premere Ctrl-Alt-F2 per passare a tty2;
  • (in presenza di più persone con accesso al sistema, o se la console tty2 è stata usata in precedenza) inviare la combinazione SysRq+K premendo Alt-R Sist-k (oppure Alt-Stamp-k) per generare una nuova console sicura, terminando tutte le eventuali applicazioni collegate;
  • 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à!);
  • uscire con exit o premendo Ctrl-d per terminare la shell;
  • premere Alt+FrecciaSinistra per passare alla console precedente, e ripetere fino a tornare a quella di partenza o eventualmente al proprio server grafico.

Questo metodo, anche se molto più laborioso degli altri, è l'unico sempre sicuro anche se l'account dell'utente utilizzato per eseguire su o sudo fosse stato compromesso, perché ha il vantaggio di appoggiarsi unicamente sulla sicurezza del sistema.


Come ultima alternativa, è possibile anche ricorrere a sudo allo scopo di eseguire un comando come utente root, che di default chiede la propria password, contrariamente a su. Solitamente, se installato e configurato, si scrive sudo prima di ogni comando da eseguire come amministratore.

Se durante l'installazione si ha disabilitato l'account root, l'utente creato è stato automaticamente aggiunto al gruppo sudo e questo è l'unico modo per ottenere privilegi di amministratore.

Per esempio:

$ id -u

restituisce l'UID del proprio utente, che sarà maggiore di 0 (su Debian di default è maggiore o uguale a 1000), ma:

$ sudo id -u

dopo la richiesta della propria password restituisce 0 (l'UID di root) ed è equivalente a:

$ su -
# id -u
# exit

dove su chiede la password dell'utente root, che deve essere abilitato.