lffl consiglia

Articoli Recenti

19 giugno 2012

Pieghiamo sudo al nostro volere!

-


Se esistessero i dieci comandamenti per Linux, sicuramente il comando sudo troverebbe posto; esistendo da quasi trent'anni e mutando poco o nulla. Fortunatamente, come la quasi totalità delle applicazioni ed oggetti in ambiente Linux, è altamente personalizzabile sotto ogni aspetto: vediamo quindi come poter interagire nel migliore dei modi con il primo comando che si impara nella migrazione verso il Pinguino; andando a modificare il suo file di configurazione.
Per effettuare delle modifiche sul file /etc/sudoers, è assolutamente necessario utilizzare il comando visudo, che effettua dei controlli sulla sintassi utilizzata per evitare di incappare in errori e danneggiare irreparabilmente il file; con delle conseguenze facilmente immaginabili.

Dopo questa breve premessa, vediamo come possiamo interagire con sudo per trarne i maggiori vantaggi possibili.

1 - Specificare gli utenti con i permessi sudo

L'utente che creiamo quando installiamo il sistema operativo è impostato come amministratore di sistema, quindi può usare sudo, ed eventuali altri account possono essere impostati sia come amministratori che come standard; non avendo quindi accessibilità al comando sudo. È possibile controllare graficamente il tipo di account dal gestore utenti e gruppi della nostra distribuzione e, per ottenere i privilegi di sudo, basta impostare l'account come amministratore.


Ovviamente, prima di poter modificare il tipo di utenza, sarà necessario inserire la nostra password di amministratori.

2 - Fare dimenticare a sudo la password

Di default sudo mantiene in memoria la nostra password (e di conseguenza l'accesso) per quindici minuti, evitandoci quindi di doverla riscrivere qualora ci si presentasse l'occasione di utilizzare più volte il comando, ad esempio quando stiamo installando del software tramite dei repository dedicati da aggiungere; funzionalità che è davvero comoda per chi come me utilizza password con quasi due dozzine di caratteri misti. Tuttavia, se stiamo per lasciare utilizzare il nostro PC a qualcuno, potremmo voler evitare che questi possa modificare il sistema approfittando della password in memoria. Le soluzioni a questo punto sono due: non lasciamo utilizzare il PC, oppure cancelliamo la password con il comando

sudo -k

3 - Avere sempre la richiesta per la password

In caso il nostro PC venga utilizzato da più persone e non si voglia effettuare il logout per cambiare utente, possiamo dare istruzioni a sudo perché chieda costantemente la password, disabilitando quindi la funzionalità di memoria. Quest'impostazione così come le altre, è contenuta all'interno del file /etc/sudoers che abbiamo citato ad inizio articolo, e quindi deve essere utilizzato il comando:

sudo visudo

Questo comando ci aprirà il file con l'editor di testo integrato nel terminale Nano, e per modificare il comportamento dovremo aggiungere la stringa "Defaults timestamp_timeout" aggiungendo come valore zero, e sotto le altre stringhe Defaults, come da screenshot.


Dopo aver modificato il valore, digitiamo CTRL+O per salvare e quindi CTRL+X per chiudere l'editor.

4 - Cambiare il tempo di memorizzazione della password

Come già detto al secondo punto, in configurazione originale la password viene tenuta in memoria per quindici minuti dall'ultimo comando, ma sempre modificando e/o aggiungendo la stringa "Defaults timestamp_timeout", impostando il valore a noi più consono tramite la variabile, ricordandoci che il numero inserito esprime i minuti. Se per esempio vogliamo settare la memoria di sudo a cinque minuti, dovremo inserire "Defaults timestamp_timeout=5"; apriamo quindi Nano e modifichiamo come in figura:


Nuovamente, dopo aver apportato le modifiche che ci interessano,  digitiamo CTRL+O per salvare e quindi CTRL+X per chiudere l'editor.

N.B. Per evitare ripetizioni che influiscano negativamente sulla lettura e scorrevolezza dell'articolo, daremo per assodata la procedura di apertura, salvataggio e chiusura dell'editor per ogni modifica.

5 - Inibire la richiesta della password

Chiaramente, oltre a modificare a nostro piacimento la durata per cui sudo deve ricordarsi la password, possiamo fare in modo che non ce la chieda più. Così facendo, fino a che siamo collegati al nostro account, ogni comando preceduto da sudo non avrà necessità di ottenere l'autenticazione, basta chiaramente inserire il nome utente che andrà a beneficiare di tale comportamento. Per poterlo fare basta aggiungere la stringa "username ALL=(ALL) NOPASSWD: ALL" al file /etc/sudoers; ovviamente al posto di username andrà indicato il nostro.


Possiamo anche modificare la stringa "%sudo" in tal modo, tutti gli utenti sudo e quindi amministratori, non dovranno più inserire la password per qualsiasi domanda.

6 - Inibire la richiesta della password solo per alcuni comandi

Abbiamo appena visto come inibire in maniera totale la richiesta della password, ma ciò potrebbe comportare a dei pericoli dovuti alla nostra disattenzione nel digitare alcuni comandi che potrebbero essere dannosi. Per tenerci al sicuro, basterà infatti indicare il percorso dei comandi per cui non vogliamo inserire la password e di cui ci fidiamo, come variabile di NOPASSWD al posto di ALL; mantenendo sempre la sintassi utilizzata per il punto precedente. Se ad esempio vogliamo poter utilizzare il comando apt-get ed il comando shutdown in tutte le varianti, non bisognerà fare altro che specificarne i percorsi come da immagine sotto:


Per separare i percorsi, non è necessario inserire spazi, ma soltanto una virgola.

7 - Permettere ad un utente solo alcuni comandi

Andare a generare una blacklist per dei comandi che non vogliamo vengano eseguiti da utenti non abilitati, non è la scelta migliore, perché sarebbe possibile eseguirli ugualmente attraverso il comando "cp" e far partire quindi la copia, rendendo inutile il lavoro. Un metodo più efficace è quello di impostare una whitelist, cioè una lista di comandi permessi che automaticamente esclude quelli non indicati nella variabile. Per capirci meglio, se vogliamo dare ad un utente standard la possibilità di utilizzare il comando apt-get e shutdown, dovremo creare una stringa contenente: "standarduser ALL=/usr/bin/apt-get,/sbin/shutdown" dove chiaramente standarduser sarà il nome dell'utente interessato.


Se vogliamo sapere quali comandi quel determinato utente può eseguire, anche solo per controllare di aver inserito i percorsi che a noi interessano, possiamo utilizzare il comando:

sudo -U standarduser –l

Ancora una volta, standarduser andrà sostituito con il nome utente interessato alla modifica.


8 - Creare un log dell'accesso a sudo

Possiamo inoltre creare dei log con tutti gli accessi a sudo, in modo da poter risalire a quando possono essere state effettuate delle operazioni importanti come l'installazione di nuovo software o la rimozione di dati. Per abilitare questa funzione, dovremo aggiungere la stringa "Defaults logfile=/var/log/sudo"; chiaramente /var/log/sudo è un percorso a caso e quindi possiamo impostare quello che a noi sembra più comodo.


Per poter visualizzare il log, basterà utilizzare un comando simile a:

sudo cat /var/log/sudo

Ed otterremo un output simile al seguente.


Teniamo bene a mente che, se un utente non ha accesso limitato, può accedere a questo file e modificarlo rendendolo quindi inutile. Oltretutto, l'utente potrebbe effettuare un login come root e non lascerebbe alcuna traccia sul log; quindi il modo migliore per poter sfruttare questa funzionalità è quella di restringere il campo d'azione degli utenti che non siano amministratori a solo pochi comandi.

Ringraziamo HowToGeek per l'articolo originale e le immagini.