f in x
Gestione utenti e gruppi Linux: adduser, sudo e sicurezza degli accessi
> cd .. / HUB_EDITORIALE > Visualizza in Inglese
Analisi dei dati e metriche

Gestione utenti e gruppi Linux: adduser, sudo e sicurezza degli accessi

[2026-06-08] Author: Ing. Calogero Bono

Hai appena acceso un server Linux. Hai fatto il login come root. Tutto funziona. Ma ora arriva il vero problema: come gestisci chi ha accesso a cosa? Lasciare tutto in mano a root è il modo più veloce per ritrovarsi con un server compromesso. Noi, di Meteora Web, lo vediamo ogni giorno nei progetti che ci arrivano: server con unico utente root, password deboli, nessuna separazione dei privilegi. Ecco perché in questa guida ti portiamo dritti al punto: come creare utenti, assegnare permessi con sudo, gestire i gruppi e blindare gli accessi. Niente teoria astratta: comandi reali, esempi concreti, decisioni da prendere subito.

Perché separare gli utenti è la prima regola di sicurezza

In un sistema Linux, ogni processo e ogni sessione utente ha un set di permessi. L'utente root può tutto. Ma se un attaccante riesce a entrare con una sessione root, ha il controllo totale del server. Separare gli accessi su più utenti limita i danni: se un account viene compromesso, il danno è circoscritto ai permessi di quell'utente. Non si tratta di burocrazia, ma di sopravvivenza del server.

Noi lo chiamiamo il principio del minimo privilegio: ogni utente deve avere solo i permessi strettamente necessari per fare il suo lavoro. Un utente che deve solo caricare file via FTP non ha bisogno di sudo. Un developer che deve riavviare un servizio può avere un permesso specifico, non l'intero potere di root. Sui server che gestiamo per i nostri clienti, applichiamo questa regola dal primo giorno.

adduser vs useradd: quale usare (e perché)

Linux offre due comandi per creare utenti: useradd (low-level) e adduser (frontend interattivo). Per un principiante, adduser è la scelta giusta. Crea la home directory, copia i file di configurazione di default, imposta la shell e chiede la password in modo interattivo. useradd, invece, richiede di specificare ogni opzione manualmente.

Esempio pratico: creare un utente con adduser

sudo adduser mario

Questo comando fa tutto in automatico: crea l'utente mario, la directory /home/mario, copia i file da /etc/skel, imposta la shell a /bin/bash e chiede di inserire la password. Alla fine ti chiederà alcuni dati opzionali (nome completo, telefono, ecc.) che puoi saltare premendo Invio.

Se invece vuoi usare useradd per avere più controllo (utile negli script), ecco l'equivalente:

sudo useradd -m -s /bin/bash mario
sudo passwd mario

Con -m crei la home directory, con -s imposti la shell. Poi devi impostare la password separatamente con passwd.

Gruppi: organizzare i permessi con intelligenza

Un utente può appartenere a più gruppi. I gruppi servono a gestire i permessi in modo collettivo: invece di dare sudo a dieci utenti uno per uno, crei un gruppo sudo e ci aggiungi gli utenti. Linux ha gruppi predefiniti come sudo (o wheel su alcune distribuzioni) che concedono privilegi amministrativi.

Creare un gruppo e aggiungere un utente

sudo groupadd sviluppatori
sudo usermod -aG sviluppatori mario

L'opzione -aG aggiunge l'utente al gruppo senza rimuoverlo dagli altri. Attenzione: senza -a, usermod -G sostituirebbe tutti i gruppi dell'utente, un errore comune che ti lascerebbe fuori da sudo se non stai attento.

Per verificare i gruppi di un utente:

groups mario

Oppure con id mario per vedere anche gli ID numerici.

Sudo: dare il minimo indispensabile

Il comando sudo permette a un utente di eseguire comandi con i privilegi di un altro utente (di solito root). Il file di configurazione è /etc/sudoers. Non modificarlo mai a mano con un editor normale: usa visudo che controlla la sintassi prima di salvare.

Concedere sudo a un utente

Per aggiungere mario al gruppo sudo (su Ubuntu/Debian):

sudo usermod -aG sudo mario

Su CentOS/RHEL il gruppo si chiama wheel:

sudo usermod -aG wheel mario

Dopo l'aggiunta, l'utente deve fare logout e login (o riavviare la shell) perché i cambiamenti gruppo abbiano effetto.

Permessi specifici con visudo

Se vuoi che un utente possa eseguire solo un comando specifico, modifichi /etc/sudoers con visudo:

sudo visudo

E aggiungi una riga come questa:

mario ALL=(ALL) /usr/bin/systemctl restart apache2

In questo modo mario può eseguire solo sudo systemctl restart apache2, niente altro con sudo. Puoi anche permettere un intero gruppo:

%sviluppatori ALL=(ALL) /usr/bin/apt update, /usr/bin/apt upgrade

Il % indica un gruppo.

Sicurezza degli accessi: password, SSH e chiavi

Una password forte è il minimo. Ma su un server accessibile da remoto, le chiavi SSH sono molto più sicure delle password. Ecco cosa facciamo noi su ogni server che configuriamo:

Disabilitare l'accesso root via SSH

Nel file /etc/ssh/sshd_config imposta:

PermitRootLogin no

Poi riavvia il servizio:

sudo systemctl restart sshd

Ora nessuno può collegarsi come root via SSH. Dovranno prima connettersi con un utente normale e poi usare sudo.

Autenticazione con chiave SSH

Genera una coppia di chiavi sul tuo computer client:

ssh-keygen -t ed25519 -C "commento"

Poi copia la chiave pubblica sul server:

ssh-copy-id mario@ip-del-server

Dopo aver verificato che la connessione con chiave funziona, disabilita l'autenticazione password in /etc/ssh/sshd_config:

PasswordAuthentication no

E riavvia sshd.

Eliminare utenti e gruppi in modo pulito

Quando un utente non serve più, non limitarti a cancellarlo. Usa deluser (o userdel) con l'opzione per rimuovere anche la home e la mail spool.

sudo deluser --remove-home mario

Per eliminare un gruppo:

sudo groupdel sviluppatori

Attenzione: non puoi eliminare un gruppo se è il gruppo primario di un utente esistente. Prima sposta l'utente in un altro gruppo o cancellalo.

Checklist delle buone pratiche di sicurezza

Ecco una lista che applichiamo su ogni server che mettiamo in produzione per i nostri clienti:

  • Nessun accesso root diretto via SSH (PermitRootLogin no).
  • Autenticazione solo con chiave SSH (PasswordAuthentication no).
  • Utenti separati per ogni servizio o persona.
  • Sudo con comandi specifici dove possibile, non sudo illimitato.
  • Disabilitare account inattivi con usermod --expiredate 1 nomeutente per bloccare l'accesso.
  • Monitorare i log con journalctl -u ssh e last per vedere chi ha fatto login.
  • Usare un gruppo dedicato per sudo e non dare sudo a tutti.

In sintesi — cosa fare adesso

Se hai un server con un solo utente root, fermati. Crea subito un utente normale, dagli sudo, e disabilita root SSH. Poi, per ogni persona o servizio che deve accedere, crea un utente separato e assegna solo i permessi strettamente necessari. Non è complicato: sono tre comandi che ti separano da un disastro.

Azioni immediate:

  1. Loggati come root sul tuo server.
  2. Crea un utente per te: adduser tuo nome.
  3. Aggiungilo al gruppo sudo: usermod -aG sudo tuo nome.
  4. Configura la chiave SSH e disabilita password/root SSH.
  5. Testa la connessione dal nuovo utente e verifica che sudo funzioni.

Non aspettare che qualcuno ti bussi alla porta (virtualmente). Noi lo facciamo su ogni server che tocchiamo. Fallo anche tu.

Sponsored Protocol

Ing. Calogero Bono

> AUTHOR_EXTRACTED

Ing. Calogero Bono

Co-founder di Meteora Web. Ingegnere informatico, sviluppo ecosistemi digitali ad alte prestazioni. AI, automazione, SEO tecnica e infrastrutture web. Scrivo di tecnologia per rendere complesso… semplice.

[ Read Full Dossier ]

Hai bisogno di applicare questa strategia?

Esegui il protocollo di contatto per iniziare un progetto con noi.

> INIZIA_PROGETTO

Sponsored

> MW_JOURNAL

> READ_ALL()