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.
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
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.
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.
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.
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.
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.
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.