Partiamo dal presupposto che abbiamo degli utenti in un sistema Linux server e dobbiamo permettere l’accesso all’elevazione di privilegio a super utente.
Linux infatti permette di prendere per interposta persona l’accesso che solitamente ha root che è il super utente di sistema, ovvero quello che può cambiare ogni permesso a qualsiasi file e directory. Capite bene che tale potere va dosato.
Generalmente si utilizza il comando sudo seguito dal comando che si desidera dare, e che ovviamente tale comando non è nelle disponibilità del nostro utente. Cioè se da utente impartisco un comando “x” e mi viene restituito un errore del tipo: “Errore 13: Permesso Negato“, allora devo ricorrere (nella maggioranza dei casi) a interporre il comando sudo, il quale mi chiederà la password di accesso dell’utente stesso.
Sudo in molte distribuzioni è anche un gruppo, infatti se facciamo grep sudo /etc/group vedremo che è presente. Pertanto dovremo semplicemente aggiungere all’utente che già esiste come gruppo secondario con:
sudo usermod -a -G sudo utente
A questo punto dipende un po’ dalla distribuzione, su Ubuntu e Debian il gruppo sudo è chiaramente già stato approvato nel file /etc/sudoers dove infatti dovremmo trovare una stringa simile a questa:
%sudo ALL=(ALL:ALL) ALL
dove sostanzialmente significa che tutti gli utenti che fanno parte del gruppo sudo possono elevarsi a super utente.
Prima ho accennato che al comando sudo viene chiesta la password, in genere una sola volta per sessione. La questione è un po’ controversa a livello sistemistico, poiché è possibile poter evitare questa rottura di scatole con una semplice stringa. In linea di massima se entrare con un chiave ssh (per cui non scrivete fisicamente il login), nel momento che sudo vi chiede la password è chiaramente quella dell’utente (che tra l’altro deve averla impostata almeno una volta). Viceversa se entrate con il login user e password, questa sarà la stessa nell’elevazione, quindi di fatto un po’ inutile. Va però detto che in passato a causa di bachi gli hacker potevano ottenere l’accesso alla shell dell’utente senza conoscere la password, e quindi al momento di utilizzare sudo si trovavano punto a capo.
Come potete intuire la questione sta di fatto alla sensibilità dell’amministratore di sistema. Per la cronaca, per evitare la richiesta della password all’elevazione di sudo si fa aggiungendo un nuovo file all’interno della directory /etc/sudoers.d (ad esempio nomeutente senza estensioni) con una semplice stringa:
utente ALL=(ALL) NOPASSWD:ALL
dove chiaramente utente andrà cambiato con quello da voi utilizzato o scelto. Da notare la direttiva NOPASSWD che si può chiaramente intuire a cosa serva. Potenzialmente la stringa qui sopra potremo anche copiarla al posto di quella del gruppo SUDO vista in precedenza, ma vi sconsiglio di attuare una politica del genere.