Vai al contenuto principale

Aggiungere utenti al gruppo Docker: guida per i professionisti dei dati

Scopri come usare correttamente Docker senza sudo, mantenendo i tuoi sistemi sicuri.
· 10 min leggi

Scopri con l'IA

Ti capita di dover digitare sudo prima di ogni comando Docker? Questo articolo fa per te.

Per impostazione predefinita, Docker limita l’accesso al suo demone, consentendo di eseguire comandi solo a root e ai membri del gruppo docker. Questo rende il sistema più sicuro, ma è fastidioso quando lavori tutto il giorno con i container. Il gruppo docker esiste proprio per questo motivo: per permetterti di usare Docker senza che le password di sudo ti rallentino.

Quando ti aggiungi al gruppo docker, noterai subito la differenza. Puoi eseguire docker build, docker run e altri comandi senza errori di permessi o richieste di password.

In questo articolo imparerai esattamente come aggiungere utenti al gruppo docker su diversi sistemi, quali rischi per la sicurezza tenere d’occhio e come proteggere il sistema pur rendendo Docker più facile da usare.

> Gli LLM sono sulla bocca di tutti nel 2025. Segui questa guida passo passo per distribuire applicazioni LLM con Docker.

Capire il gruppo Docker

Quando inizi a lavorare con Docker, ti imbatterai presto in problemi di permessi se non hai configurato tutto correttamente. 

Vediamo cosa è davvero il gruppo docker e perché è importante per il tuo flusso di lavoro.

Definizione e funzionalità

Il gruppo docker è un gruppo di utenti di sistema che concede ai membri il permesso di usare il demone Docker senza dover ricorrere ai privilegi sudo. 

Quando installi Docker su sistemi Linux, questo gruppo viene in genere creato automaticamente. Il file socket di Docker (/var/run/docker.sock) è di proprietà di root ma ha i permessi di gruppo impostati su docker: è così che funziona questo controllo degli accessi.

Gli utenti di questo gruppo possono creare immagini, avviare container, gestire reti ed eseguire altre operazioni Docker senza anteporre sudo ai comandi. Significa meno digitazione e nessuna richiesta di password quando lavori con i container. Se provi a eseguire comandi Docker senza essere in questo gruppo, otterrai errori "permission denied", finendo per rallentare i tuoi progressi.

Implicazioni di sicurezza dell’appartenenza al gruppo

Aggiungere utenti al gruppo docker comporta rischi di sicurezza reali che non dovresti ignorare. 

I membri del gruppo docker possono ottenere privilegi di root sull’host. Questo accade perché Docker permette di montare directory dell’host nei container, incluse directory di sistema sensibili. Un utente con accesso a Docker può creare un container che monta l’intero filesystem di root e modificare qualsiasi file sull’host.

Vulnerabilità di evasione dal container costituiscono un altro rischio, perché potrebbero consentire agli attaccanti di sfuggire all’isolamento del container. 

Dovresti aggiungere al gruppo docker solo utenti fidati e, anche in quel caso, considerarlo equivalente a concedere accesso root. Molti professionisti della sicurezza raccomandano di limitare l’appartenenza al gruppo docker solo agli utenti che ne hanno davvero bisogno per il loro lavoro quotidiano.

Implementazione passo dopo passo

Ora che sai cos’è il gruppo docker e le sue implicazioni, passiamo alla configurazione pratica.

Creazione del gruppo docker

Nella maggior parte dei casi, non dovrai creare manualmente il gruppo docker perché viene creato automaticamente durante l’installazione di Docker. Puoi verificare se il gruppo esiste eseguendo:

grep docker /etc/group

Immagine 1 - Verifica dell’esistenza del gruppo docker

Immagine 1 - Verifica dell’esistenza del gruppo docker

Se, per qualche motivo, il gruppo non esiste (come nel mio caso), puoi crearlo con questo comando (solo per Linux):

sudo groupadd docker

Questo comando crea il gruppo docker sul tuo sistema, ma è limitato ai sistemi operativi Linux. 

Per macOS, puoi seguire le istruzioni ufficiali di Apple, dato che il gruppo si crea tramite interfaccia grafica. Il processo è simile per i sistemi operativi Windows.

Dopo aver seguito i passaggi, dovresti vedere il gruppo creato:

Immagine 2 - Verifica dell’esistenza del gruppo docker (2)

Immagine 2 - Verifica dell’esistenza del gruppo docker (2)

Aggiungere utenti al gruppo

Per aggiungere l’utente corrente al gruppo docker, esegui questo comando sui sistemi operativi Linux:

sudo usermod -aG docker $USER

Il flag -a significa "append" e -G specifica il gruppo a cui vuoi aggiungere l’utente. La variabile $USER usa automaticamente il tuo nome utente corrente.

Su macOS e Windows, puoi aggiungere utenti al gruppo tramite le impostazioni di sistema o il Pannello di controllo: basta attivare un interruttore per aggiungere tutti gli utenti desiderati:

Immagine 3 - Aggiunta di utenti al gruppo

Immagine 3 - Aggiunta di utenti al gruppo

Dopo che ti sei aggiunto al gruppo, devi disconnetterti e rientrare perché le modifiche abbiano effetto. La sessione corrente non riconoscerà la nuova appartenenza al gruppo finché non esegui un logout completo. Su alcuni sistemi potrebbe essere necessario riavviare:

sudo reboot

Per verificare che ora il tuo utente faccia parte del gruppo docker, esegui:

groups

Dovresti vedere "docker" tra le appartenenze ai gruppi:

Immagine 4 - Visualizzazione dei gruppi utente

Immagine 4 - Visualizzazione dei gruppi utente

Risoluzione dei problemi comuni

Se continui a ricevere errori "permission denied" dopo esserti aggiunto al gruppo, potresti dover correggere i permessi del socket di Docker:

sudo chown root:docker /var/run/docker.sock
sudo chmod 660 /var/run/docker.sock

Un altro problema comune si verifica quando il servizio Docker si riavvia, cosa che può reimpostare i permessi del socket. Se Docker è stato avviato dopo le modifiche al gruppo, prova a riavviare il servizio Docker:

sudo systemctl restart docker

Per problemi di permessi persistenti, verifica che la configurazione del servizio Docker sia corretta. Su alcuni sistemi, Docker potrebbe essere configurato per usare un nome di gruppo o una posizione del socket diversi. Puoi controllare il file di configurazione del demone Docker in /etc/docker/daemon.json o i file di servizio in /lib/systemd/system/docker.service.

Ricorda che qualsiasi modifica ai permessi avrà effetto sulla tua sessione corrente solo dopo il logout e nuovo login. Questa è la causa numero uno dei problemi "ho fatto le modifiche, ma non funziona ancora".

Considerazioni sulla sicurezza e mitigazioni

Aggiungere utenti al gruppo docker può creare rischi per la sicurezza, di cui devi essere consapevole. Vediamo questi rischi e cosa puoi fare per proteggere i tuoi sistemi.

Rischi dell’appartenenza al gruppo docker

Essere membri del gruppo docker equivale praticamente ad avere accesso root al sistema. Non è un’esagerazione: è il funzionamento reale di Docker.

Quando fai parte del gruppo docker, puoi eseguire container che montano parti sensibili del filesystem dell’host. Per esempio, questo semplice comando ti dà pieno accesso per modificare qualsiasi file sull’host:

docker run -it --rm -v /:/hostroot alpine chroot /hostroot

Puoi anche modificare le impostazioni del demone Docker, creare container privilegiati o usare la modalità di rete dell’host per aggirare l’isolamento di rete. Queste capacità consentono a utenti malevoli (o ad applicazioni compromesse con accesso a Docker) di prendere completamente il controllo dell’host.

Ci sono un paio di altri rischi potenziali che devi conoscere:

  • Eseguire container che accedono direttamente ai dispositivi hardware.
  • Associare porte di rete con numerazione bassa.
  • Avviare container con profili seccomp personalizzati che disattivano i controlli di sicurezza.
  • Creare container che usano lo spazio dei processi dell’host.

Ognuno di questi aspetti può essere abusato per ottenere privilegi elevati o interrompere le operazioni di sistema.

Best practice per mitigare i rischi

Per ridurre questi rischi, segui il principio del minimo privilegio — concedi l’appartenenza al gruppo docker solo a chi ne ha davvero bisogno. Se più persone devono usare un sistema condiviso, valuta la creazione di un account separato solo per le operazioni Docker.

La modalità rootless di Docker offre un’alternativa più sicura all’approccio basato sul gruppo docker. La rootless mode ti permette di eseguire demone e container Docker come utente non root, senza richiedere l’appartenenza a gruppi speciali:

# Installare Docker in modalità rootless
dockerd-rootless-setuptool.sh install

# Avviare il demone Docker rootless
systemctl --user start docker

I namespace utente forniscono un ulteriore livello di sicurezza mappando gli UID del container a un intervallo diverso sull’host. Ciò significa che anche se un container gira come root (UID 0), quel processo viene mappato a un utente non privilegiato sull’host:

# Aggiungere a /etc/docker/daemon.json
{
  "userns-remap": "default"
}

Valuta di usare allocazione statica di UID/GID per gli utenti del container per mantenere una mappatura di identità coerente. Nei tuoi Dockerfile, crea utenti specifici con ID predefiniti:

# Creare un utente con UID/GID statici
RUN groupadd -g 10001 appgroup && \
    useradd -u 10000 -g appgroup -s /bin/bash appuser

# Passare a tale utente
USER appuser

Controlla regolarmente chi appartiene al gruppo docker con comandi come:

getent group docker

E rimuovi gli utenti che non hanno più bisogno dell’accesso:

sudo gpasswd -d username docker

Insieme, questi approcci ti offrono la comodità dell’appartenenza al gruppo docker riducendo al minimo i rischi per la sicurezza che introduce.

Configurazioni avanzate e alternative

Se cerchi modi diversi per gestire l’accesso a Docker oltre al classico approccio del gruppo, hai delle opzioni. Vediamo alcune configurazioni avanzate e alternative che potrebbero adattarsi meglio ai tuoi requisiti di sicurezza.

Hardening della sicurezza nei Dockerfile

Puoi integrare la sicurezza direttamente nei tuoi Dockerfile per ridurre i rischi anche quando gli utenti hanno accesso al gruppo docker.

Nell’esempio seguente userò build multi-stage per mantenere piccole le immagini Python e ridurre la superficie di attacco. 

Per seguire, crea questi file:

app.py:

from flask import Flask, jsonify

app = Flask(__name__)


@app.route("/api/health")
def health():
    return jsonify({"status": "healthy"})


if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8000, debug=True)

requirements.txt:

flask==3.1.0

Dockerfile:

FROM python:3.13-slim AS builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

FROM python:3.13-slim
WORKDIR /app
COPY --from=builder /usr/local/lib/python3.13/site-packages /usr/local/lib/python3.13/site-packages
COPY . .
RUN useradd -r -u 1000 -g users appuser
USER appuser
CMD ["python", "app.py"]

In poche parole, questo Dockerfile include un’istruzione USER con un utente non root e copia i contenuti rilevanti (pacchetti Python) da uno step di build precedente.

> Se sei alle prime armi con la containerizzazione delle applicazioni, niente paura: la nostra guida completa ti aiuta passo passo.

Puoi creare ed eseguire un container del genere con i seguenti comandi:

# Creare l'immagine
docker build -t my-python-app .

# Eseguire il container
docker run --cap-drop=ALL --cap-add=NET_BIND_SERVICE my-python-app

Immagine 5 - Esecuzione di un container con privilegi minimi

Immagine 5 - Esecuzione di un container con privilegi minimi

Il comando appena aggiunto — --cap-drop=ALL — rimuove tutte le capability Linux dal container (ne limita i privilegi), mentre --cap-add=NET_BIND_SERVICE riaggiunge la capability NET_BIND_SERVICE, che consente al container di associare porte a numerazione bassa.

Queste tecniche limitano ciò che un container può fare, anche se qualcuno con accesso al gruppo docker tenta di abusarne.

sudo come alternativa

Se non vuoi aggiungere utenti al gruppo docker, usare sudo è un’alternativa valida. Questo approccio ti dà più controllo e una traccia di audit dei comandi Docker.

Puoi creare una voce sudoers personalizzata che consenta a utenti specifici di eseguire solo i comandi Docker senza password:

# Aggiungere a /etc/sudoers.d/docker
username ALL=(root) NOPASSWD: /usr/bin/docker

Per una migliore usabilità, crea alias nel tuo file .bashrc o .zshrc:

alias docker='sudo docker'
alias docker-compose='sudo docker-compose'

Questo approccio con sudo offre maggiore sicurezza perché:

  • Tutti i comandi Docker vengono registrati nei log di sistema.
  • Puoi limitare quali sottocomandi Docker sono consentiti.
  • Gli utenti non possono modificare la configurazione del demone Docker.

Lo svantaggio è un po’ di digitazione in più e potenziali problemi con strumenti che si aspettano accesso diretto a Docker.

Considerazioni per Windows

Windows gestisce i permessi di Docker in modo diverso rispetto a Linux. Invece del gruppo docker, Windows usa il gruppo docker-users.

Per aggiungere un utente al gruppo docker-users su Windows, fai così:

  1. Apri Gestione computer (clic destro su Start e seleziona "Gestione computer").
  2. Vai su Strumenti di sistema > Utenti e gruppi locali > Gruppi.
  3. Fai doppio clic su "docker-users".
  4. Clicca su "Aggiungi" e inserisci il nome utente.
  5. Clicca su "OK" e chiudi Gestione computer.

Immagine 6 - Gruppi di utenti su Windows

Immagine 6 - Gruppi di utenti su Windows

In alternativa, puoi usare PowerShell con privilegi di amministratore:

Add-LocalGroupMember -Group "docker-users" -Member "username"

Dopo aver aggiunto un utente, dovrà disconnettersi e rientrare perché le modifiche abbiano effetto, proprio come su Linux.

Vale anche la pena notare che Windows offre funzionalità di sicurezza aggiuntive tramite Windows Defender Application Control e modalità di isolamento Hyper‑V non disponibili su Linux. Per ambienti ad alta sicurezza su Windows, puoi usare queste funzionalità per creare confini più robusti tra container e host.

> I professionisti dei dati hanno bisogno di Docker nel 2025, e questa guida ti mostrerà come impararlo.

Riepilogo dei gruppi utenti Docker

Ora hai una visione completa di come aggiungere utenti al gruppo docker e perché è importante. Facciamo un rapido riepilogo.

Aggiungere utenti al gruppo docker rende il lavoro con i container molto più semplice, eliminando la necessità dei comandi sudo. È un processo semplice: verifica se il gruppo esiste, aggiungi il tuo utente con usermod -aG docker $USER e poi disconnetti e riconnetti. Se incontri problemi, controlla i permessi del socket e riavvia Docker.

Ma non dimenticare che concedere l’accesso al gruppo docker è quasi come consegnare la password di root. Chiunque in questo gruppo può montare l’intero filesystem, installare software o persino modificare file di sistema tramite i container. Ecco perché è fondamentale essere selettivi su chi ottiene questo accesso.

Quindi qual è l’approccio giusto per il tuo ambiente?

In generale, per gli sviluppatori che lavorano sulle proprie macchine, l’appartenenza al gruppo docker va bene. Per server condivisi o ambienti di produzione, valuta alternative come la modalità rootless, i namespace utente o l’uso di sudo con comandi limitati. E qualunque cosa tu faccia, segui sempre le best practice di sicurezza nei Dockerfile usando utenti non root e rimuovendo le capability non necessarie.

Tieni d’occhio chi ha accesso al gruppo docker eseguendo audit regolari. Le persone cambiano ruolo, lasciano i team o smettono semplicemente di aver bisogno di certi permessi nel tempo. Un rapido controllo con getent group docker può aiutarti a individuare utenti che non dovrebbero più esserci.

Se vuoi saperne di più su Docker e sulla containerizzazione in generale, questi corsi DataCamp sono il passo successivo ideale:

FAQ

Che cos’è il gruppo Docker e perché è importante?

Il gruppo Docker è un gruppo di utenti di sistema che concede ai membri il permesso di usare il demone Docker senza privilegi sudo. Esiste per rendere i comandi Docker più comodi, eliminando richieste di password ed errori di permessi. Quando installi Docker su sistemi Linux, questo gruppo viene creato automaticamente e controlla l’accesso al file socket di Docker. Aggiungere utenti a questo gruppo consente loro di eseguire direttamente tutti i comandi Docker, migliorando notevolmente l’efficienza del flusso di lavoro.

Quali rischi di sicurezza comporta l’appartenenza al gruppo Docker?

L’appartenenza al gruppo Docker di fatto garantisce un accesso equivalente a root al tuo sistema. I membri possono montare il filesystem dell’host all’interno dei container, modificare file di sistema e potenzialmente ottenere pieno accesso amministrativo. Possono anche cambiare la configurazione del demone Docker ed eseguire container privilegiati con accesso diretto all’hardware. Questo livello di accesso rende fondamentale aggiungere al gruppo Docker solo utenti fidati e adottare ulteriori misure di hardening della sicurezza.

Posso usare Docker senza aggiungere utenti al gruppo Docker?

Sì, puoi usare Docker senza aggiungere utenti al gruppo Docker. L’alternativa più comune è usare sudo prima di ogni comando Docker, che offre migliore sicurezza e capacità di auditing. Un’altra opzione è configurare la modalità rootless di Docker, che consente di eseguire demone e container come utente non root. Puoi anche creare voci sudoers personalizzate che permettono a utenti specifici di eseguire solo i comandi Docker senza password.

Come verifico se un utente è stato aggiunto con successo al gruppo Docker?

Puoi verificare l’aggiunta con successo al gruppo Docker eseguendo il comando groups $USERNAME per elencare tutti i gruppi a cui appartiene l’utente. Se "docker" compare nell’elenco, l’utente è un membro. In alternativa, puoi controllare con getent group docker per vedere tutti i membri del gruppo Docker. Ricorda che gli utenti devono disconnettersi e rientrare prima che le nuove appartenenze ai gruppi abbiano effetto, un punto spesso critico nella risoluzione dei problemi.

In che cosa differisce la gestione del gruppo Docker su Windows rispetto a Linux?

Windows usa un gruppo "docker-users" al posto del gruppo "docker" presente sui sistemi Linux. Su Windows, aggiungi gli utenti tramite Gestione computer o PowerShell con privilegi di amministratore usando il comando Add-LocalGroupMember. A differenza di Linux, Windows offre funzionalità aggiuntive tramite Windows Defender Application Control e modalità di isolamento Hyper-V. Tuttavia, proprio come su Linux, gli utenti devono disconnettersi e rientrare dopo essere stati aggiunti al gruppo perché le modifiche abbiano effetto.

Dario Radečić

Autore

Dario Radečić

Senior Data Scientist con base in Croazia. Top Tech Writer con oltre 700 articoli pubblicati, per più di 10 milioni di visualizzazioni. Autore del libro Machine Learning Automation with TPOT.

Argomenti

Correlato