Files
laboratori-cloud/labs/lab-01-iam/tutorial/02-docker-group-permissions.md
Luca Sacchi Ricciardi b031f58dfd feat(02-02): create tutorial part 2 - Docker group permissions
- Step-by-step guide for adding users to docker group
- Explains group membership evaluation timing issue
- Shows parallelism with AWS IAM User + Policy
- Includes multiple troubleshooting scenarios
2026-03-24 22:24:26 +01:00

4.3 KiB

Tutorial: Permessi Docker tramite Gruppi Linux

In questo tutorial imparerai come dare permessi Docker a un utente tramite l'appartenenza al gruppo docker. Questo simula l'assegnazione di policy IAM a un utente cloud.

Obiettivo

Aggiungere l'utente lab01_student al gruppo docker, permettendo l'accesso al socket Docker.

Prerequisiti


Passo 1: Verifica lo stato corrente

Prima di modificare i permessi, verifichiamo lo stato attuale.

Esegui:

# Verifica i gruppi dell'utente
groups lab01_student

# Verifica i permessi del socket Docker
ls -l /var/run/docker.sock

Atteso:

  • groups mostra solo lab01_student (NON docker)
  • Il socket Docker ha permessi srw-rw---- ed è di proprietà root:docker

Spiegazione: Il socket Docker (/var/run/docker.sock) è accessibile solo a root e ai membri del gruppo docker.


Passo 2: Aggiungi l'utente al gruppo docker

Ora aggiungiamo l'utente al gruppo per dargli accesso Docker.

Esegui:

# Aggiungi lab01_student al gruppo docker
sudo usermod -aG docker lab01_student

# Verifica l'appartenenza al gruppo
groups lab01_student

Atteso:

lab01_student : lab01_student docker

Nota: Il gruppo docker ora appare nell'elenco!

Spiegazione:

  • -aG significa "append" (aggiunge senza rimuovere altri gruppi) e "group" (modifica i gruppi)
  • Questo è equivalente ad assegnare una policy IAM a un utente cloud

Passo 3: Importante - Login necessario

I gruppi vengono valutati al momento del login. La sessione corrente dell'utente non vedrà ancora il nuovo gruppo.

Per verificare il gruppo membership (senza dover fare login):

# Questo mostra i gruppi anche se non sono ancora attivi nella sessione
groups lab01_student

Per rendere attivi i nuovi gruppi, l'utente deve fare una di queste operazioni:

  1. Fare logout e login
  2. Eseguire newgrp docker
  3. Eseguire su - lab01_student

Passo 4: Verifica l'accesso Docker

Ora verifichiamo che l'utente può accedere a Docker.

Esegui:

# Metodo 1: Usa newgrp per attivare il gruppo nella sessione corrente
sudo -u lab01_student -i docker ps

Atteso:

CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

Il comando funziona! L'utente ora ha accesso Docker.


Passo 5: Verifica con un container di test

Facciamo partire un container semplice per confermare che tutto funziona.

Esegui:

# Esegui un container Alpine come lab01_student
sudo -u lab01_student -i docker run --rm alpine:3.19 whoami

Atteso:

root

Nota: Il container mostra "root" perché questo è l'utente di default DENTRO il container (non è l'utente che ha lanciato il comando). Nel Tutorial 3 imparerai a far girare i container come utente non-root.


Parallelismo con AWS IAM

Operazione Locale AWS IAM Equivalente
usermod -aG docker user AttachUserPolicy o AddUserToGroup
Utente nel gruppo docker Utente IAM con policy permessiva
Accesso al socket Docker Accesso alle API AWS

Verifica

Hai completato questo tutorial quando:

  • L'utente lab01_student è nel gruppo docker
  • L'utente può eseguire docker ps
  • L'utente può fare partire container
  • Capisci il parallelismo con IAM User + Policy

Prossimo Passo

Nel prossimo tutorial imparerai a verificare l'intera configurazione e a far girare container non-root.


Troubleshooting

Problema: L'utente non può ancora eseguire docker ps

Soluzione 1: Verifica di aver usato sudo -u lab01_student -i

# Il flag -i è importante per caricare l'ambiente corretto
sudo -u lab01_student -i docker ps

Soluzione 2: Verifica che l'utente sia nel gruppo

groups lab01_student
# Se non vedi "docker", ripeti il Passo 2

Problema: Il socket Docker ha permessi errati

Soluzione:

# Correggi i permessi del socket
sudo chmod 660 /var/run/docker.sock
sudo chown root:docker /var/run/docker.sock

Problema: usermod: user 'lab01_student' does not exist

Soluzione: Prima crea l'utente seguendo il Tutorial 1.