Files
laboratori-cloud/labs/lab-01-iam/tutorial/01-create-linux-users.md
T
2026-04-10 13:03:43 +00:00

178 lines
4.0 KiB
Markdown

# Tutorial: Creare Utenti Linux per il Lab IAM
In questo tutorial creerai utenti Linux con permessi limitati per simulare utenti IAM in un ambiente cloud. Imparerai a creare utenti, verificare i permessi e gestire l'appartenenza ai gruppi.
## Obiettivo
Creare un utente Linux `lab01_student` che non ha accesso iniziale a Docker, simulando un utente cloud senza permessi.
## Prerequisiti
- Accesso a un terminale Linux con privilegi sudo
- Docker Engine installato e in esecuzione
- Comandi base: `useradd`, `groups`, `id`
- I comandi `sudo` richiedono la password del TUO utente corrente in una sessione interattiva
---
## Passo 1: Verifica l'ambiente
Prima di creare utenti, verifichiamo che l'ambiente sia pronto.
Esegui:
```bash
# Verifica che Docker risponda correttamente
docker info >/dev/null && echo "Docker raggiungibile"
# Verifica che il gruppo docker esista
getent group docker
```
Atteso:
- `docker info` non deve restituire errori
- Il gruppo docker deve essere mostrato
Se qualcosa non funziona, consulta [Troubleshooting](#troubleshooting).
---
## Passo 2: Crea un nuovo utente Linux
Creiamo un utente che simulerà un utente cloud senza permessi IAM.
Se hai gia eseguito il lab in precedenza, riparti da uno stato pulito rimuovendo l'utente prima di ricrearlo.
Esegui:
```bash
# Se l'utente esiste già, rimuovilo e ricrealo
if id lab01_student &>/dev/null; then
sudo userdel -r lab01_student
fi
# Crea l'utente lab01_student
sudo useradd -m -s /bin/bash lab01_student
# Verifica che l'utente sia stato creato
id lab01_student
```
Atteso:
```
uid=1001(lab01_student) gid=1001(lab01_student) gruppi=1001(lab01_student)
```
Spiegazione:
- `-m` crea la home directory
- `-s /bin/bash` imposta la shell di default
- L'utente ha solo il proprio gruppo iniziale
---
## Passo 3: Verifica i gruppi dell'utente
Controlliamo a quali gruppi appartiene l'utente.
Esegui:
```bash
groups lab01_student
```
Atteso:
```
lab01_student : lab01_student
```
Nota: L'utente NON è nel gruppo `docker`. Questo è corretto - simuliamo un utente senza permessi.
---
## Passo 4: Verifica che l'utente NON può accedere a Docker
Prova a eseguire un comando Docker come l'utente `lab01_student`.
Esegui:
```bash
# Esegui docker ps come lab01_student
sudo -u lab01_student docker ps
```
Atteso:
```
permission denied while trying to connect to the Docker daemon socket
```
Questo è il comportamento corretto! L'utente non ha ancora permessi Docker.
In questo passo usiamo volutamente `sudo -u` senza `-i` per mostrare il fallimento iniziale dell'accesso al socket Docker.
L'output esatto puo cambiare leggermente in base alla versione di Docker, ma il punto chiave e che l'accesso venga negato.
---
## Passo 5: Imposta una password per l'utente (opzionale)
Se vuoi poter fare login come questo utente:
Esegui:
```bash
sudo passwd lab01_student
```
Inserisci una password quando richiesto.
---
## Verifica
Hai completato questo tutorial quando:
- [ ] L'utente `lab01_student` esiste
- [ ] L'utente NON è nel gruppo docker
- [ ] L'utente NON può eseguire comandi docker
- [ ] Il comando `groups lab01_student` mostra solo il proprio gruppo
## Prossimo Passo
Nel [prossimo tutorial](./02-docker-group-permissions.md) imparerai a dare permessi Docker all'utente tramite i gruppi.
---
## Troubleshooting
**Problema: `useradd: user 'lab01_student' already exists`**
Soluzione:
```bash
# Elimina l'utente esistente e ricrealo
if id lab01_student &>/dev/null; then
sudo userdel -r lab01_student
fi
sudo useradd -m -s /bin/bash lab01_student
```
**Problema: Docker non è in esecuzione**
Soluzione:
```bash
sudo systemctl start docker
sudo systemctl enable docker
```
**Problema: `docker info` fallisce con `permission denied`**
Soluzione: il tuo utente principale non ha ancora accesso a Docker. Completa prima i prerequisiti generali del corso oppure usa una sessione in cui Docker funziona gia per il tuo utente.
**Problema: Il gruppo docker non esiste**
Soluzione:
```bash
sudo groupadd docker
```