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
This commit is contained in:
180
labs/lab-01-iam/tutorial/02-docker-group-permissions.md
Normal file
180
labs/lab-01-iam/tutorial/02-docker-group-permissions.md
Normal file
@@ -0,0 +1,180 @@
|
||||
# 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](./01-create-linux-users.md)
|
||||
- L'utente `lab01_student` esiste e NON è nel gruppo docker
|
||||
|
||||
---
|
||||
|
||||
## Passo 1: Verifica lo stato corrente
|
||||
|
||||
Prima di modificare i permessi, verifichiamo lo stato attuale.
|
||||
|
||||
Esegui:
|
||||
|
||||
```bash
|
||||
# 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:
|
||||
|
||||
```bash
|
||||
# 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):
|
||||
|
||||
```bash
|
||||
# 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:
|
||||
|
||||
```bash
|
||||
# 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:
|
||||
|
||||
```bash
|
||||
# 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](./03-verify-iam-setup.md) 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](./03-verify-iam-setup.md) 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`
|
||||
|
||||
```bash
|
||||
# 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
|
||||
|
||||
```bash
|
||||
groups lab01_student
|
||||
# Se non vedi "docker", ripeti il Passo 2
|
||||
```
|
||||
|
||||
**Problema: Il socket Docker ha permessi errati**
|
||||
|
||||
Soluzione:
|
||||
|
||||
```bash
|
||||
# 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](./01-create-linux-users.md).
|
||||
Reference in New Issue
Block a user