- 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
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
- Completato Tutorial 1: Creare Utenti Linux
- L'utente
lab01_studentesiste e NON è nel gruppo docker
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:
groupsmostra sololab01_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:
-aGsignifica "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:
- Fare logout e login
- Eseguire
newgrp docker - 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.