È più sicuro utilizzare sudo o su, quando si ha bisogno di scalare i privilegi di un sistema Unix-like, ed in particolare in Linux?
Proteggere l’account root
è sempre da considerarsi una buona pratica, quando si tratta di rendere più sicuri sistemi Unix.
Tuttavia, tra i sysadmins molto spesso serpeggia una domanda inquietante: Dal punto di vista della sicurezza, dovrei disabilitare l’account di root nei sistemi Unix-Like?
C’è da dire che questa domanda è molto sentita dagli amministratori Linux i quali sono sovente alle prese con diverse distribuzioni del sistema operativo del pinguino che adottano diversi tipi di approccio.
Alcune distribuzioni lasciano libero l’utente di utilizzare l’account root
, altre invece optano per vietare categoricamente il login dall’esterno con l’utente root
. Quale è la soluzione migliore da adottare per mantenere un elevato livello di sicurezza del sistema?
Questo post cerca di approfondire l’argomento per chiarire una volta per tutte quali misure adottare in questo contesto per la sicurezza del sistema per sfatare il dilemma del sysadmin: sudo vs su.
Sudo o su: differenti ragioni per disabilitare l’account root
Esistono diversi motivi per disabilitare l’account root, ad esempio:
- Il tuo sistema è disponibile su una rete poco sicura, oppure è esposto in insternet, e vuoi proteggerti dagli attacchi brute force, in modo che nessuno possa indovinare la password del tuo account root.
- Gli amministratori di sistema vogliono impedire agli utenti di poter eseguire un comando come
su -
per ottenere una shell root completa, perché ora è molto più facile fare qualcosa di sbagliato che causa danni al sistema. Tuttavia possono ancora usare qualcosa comesudo -i
,sudo -s
,sudo /bin/some-shell
o anchesudo su -
se sono nel file/etc/sudoers
.
Nel secondo punto qui sopra, l’idea è di forzare l’utente a usare sudo
invece di condividere una singola password root
tra tutti gli utenti e usare sudo ha alcuni vantaggi, ad esempio:
- È meno probabile che l’utente lasci una shell aperta con accesso root completo; i permessi sudo scadono dopo un po’;
- Il Sysadmin può definire regole più flessibili usando il file sudoers;
- Il sistema registra chi sta facendo cosa, come e quando;
- Si può evitare, come accennato sopra, di dover condividere l’unica password di root tra tanti utenti, con l’ovvio problema di sicurezza correlato.
L’account root in un sistema Unix-Like
Mettiamo subito in chiaro una cosa: Non si può eliminare l’account root in un sistema Unix-Like. Quello che i può fare, è disabilitare l’account root; esattamente ciò che accade nei moderni sistemi Unix-Like.
Un account con ID 0
(solitamente chiamato root
) deve sempre esistere all’interno del sistema. Ciò che si potrebbe fare, e si fa in Ubuntu (e in alcune altre distribuzioni) è rimuovere la password dell’account root, ad evitare il login con l’utente root
.
Quindi, nessun login con il nome utente root
potrebbe avere successo, nessun ssh
potrebbe accedere come root, non importa quanti tentativi si facciano. Un utente scalare i suoi privilegi a root
solo accedendo preventivamente al sistema con uno user non-root e successivamente usando sudo
per qualsiasi utilizzo privilegiato.
Dovresti farlo? Certo; perché no? È più sicuro? Sì, un po’. Purché nessun utente esegua shell come root
per un tempo indefinito (sudo -i
), senza mai abbandonare la shell privilegiata.
Disabilitare la password di root
Come accennato più sopra, è possibile disabilitare l’utente root, in modo molto semplice, rimuovendo la password dello user root
ed agendo sul lock dello user root
.
Rimuovere la password dell’account root
:
sudo passwd -d root
Impostare il Lock per l’account root
:
sudo passwd -l root
Da questo momento, l’utente root del tuo sistema Unix è locked ed inutilizzabile da chiunque intenda accedere al sistema.
Conclusioni
Nella sezione dedicata ai mini-tutorial di questo blog, abbiamo voluto affrontare sinteticamente l’annoso problema dell’usi di sudo o su per scalare i privilegi di un utente.
Aumentare la sicurezza dei sistemi informatici è sempre una buona pratica che tutti i Sysadmin dovrebbero adottare di default.
Nella fattispecie, limitare l’uso indiscriminato dello user root è oltretutto un modo per educare gli utenti del sistema ad utilizzare il proprio livello di privilegi e non abusare del privilege escalation allo user root
, anche solo, ad esempio, per listare il contenuto della directory /opt
.

Sistemista informatico senior. Consulente informatico e fondatore di Diprimio.com per il supporto, l’assistenza e la manutenzione di infrastrutture informatiche a clienti business.