# Reference: Utenti e Gruppi Linux Specifiche tecniche per la gestione utenti e gruppi in Linux per il lab IAM. ## Comandi Utente ### useradd - Crea utente ```bash sudo useradd -m -s /bin/bash nome_utente ``` | Flag | Significato | |------|-------------| | `-m` | Crea home directory | | `-s /bin/bash` | Imposta shell di login | | `-G group1,group2` | Aggiunge a gruppi supplementari | | `-u 1000` | Specifica UID | ### usermod - Modifica utente ```bash # Aggiungi a gruppo (append) sudo usermod -aG docker nome_utente # Modifica shell sudo usermod -s /bin/zsh nome_utente # Modifica gruppi supplementari (sovrascrive) sudo usermod -G docker,nome_utente nome_utente ``` ⚠️ **IMPORTANTE:** Usa `-aG` (append) per aggiungere a un gruppo senza rimuovere gli altri. ### userdel - Elimina utente ```bash # Elimina utente (mantieni home) sudo userdel nome_utente # Elimina utente e home directory sudo userdel -r nome_utente ``` ### passwd - Imposta password ```bash # Imposta password per utente sudo passwd nome_utente # Cambia la tua password passwd ``` ## Comandi Gruppo ### groupadd - Crea gruppo ```bash sudo groupadd docker ``` ### groupmod - Modifica gruppo ```bash # Rinomina gruppo sudo groupmod -n nuovo_nome vecchio_nome # Modifica GID sudo groupmod -g 1001 docker ``` ### gpasswd - Gestisci membri gruppo ```bash # Aggiungi utente al gruppo sudo gpasswd -a utente gruppo # Rimuovi utente dal gruppo sudo gpasswd -d utente gruppo # Imposta amministratori gruppo sudo gpasswd -A utente1,utente2 gruppo ``` ### groupdel - Elimina gruppo ```bash sudo groupdelete docker ``` ## Comandi Informazione ### id - Mostra info utente ```bash # Mostra UID, GID e gruppi dell'utente corrente id # Mostra info di un utente specifico id nome_utente # Solo UID id -u nome_utente # Solo gruppi id -G nome_utente ``` Output esempio: ``` uid=1001(lab01_student) gid=1001(lab01_student) groups=1001(lab01_student),999(docker) ``` ### groups - Mostra gruppi utente ```bash # Gruppi dell'utente corrente groups # Gruppi di un utente specifico groups nome_utente ``` ### getent - Query database di sistema ```bash # Verifica che un gruppo esista getent group docker # Output: docker:x:999:utente1,utente2 # nome:x:GID:lista_membri # Verifica che un utente esista getent passwd nome_utente # Output: nome_utente:x:1001:1001:,,,:/home/nome_utente:/bin/bash # nome:x:UID:GID:commento:home:shell ``` ## File di Configurazione ### /etc/passwd ```bash # Visualizza tutti gli utenti cat /etc/passwd # Aggiungi utente manualmente (non raccomandato) echo "utente:x:1001:1001::/home/utente:/bin/bash" | sudo tee -a /etc/passwd ``` Formato: ``` username:x:UID:GID:commento:home:shell ``` ### /etc/group ```bash # Visualizza tutti i gruppi cat /etc/group # Aggiungi gruppo manualmente echo "docker:x:999:utente1,utente2" | sudo tee -a /etc/group ``` Formato: ``` gruppo:x:GID:lista_membri ``` ### /etc/shadow ```bash # Password e scadenza (richiede root) sudo cat /etc/shadow ``` ## Valutazione Gruppi al Login I gruppi vengono valutati quando l'utente fa login: | Momento | Gruppi Valutati | |---------|-----------------| | Avvio sistema | No | | Login interattivo | Si | | `su - utente` | Si (nuovo login) | | `newgrp group` | Si (solo sessione corrente) | | `sudo -u utente cmd` | No (gruppi dell'utente originale) | | Aggiunta gruppo con usermod | No (fino al prossimo login) | ## UID/GID Standard | UID/GID | Utente/Gruppo | |---------|---------------| | 0 | root | | 1-999 | Utenti di sistema | | 1000-60000 | Utenti normali | | 999 | docker (tipico) | ## Comandi Rapidi ```bash # Lista tutti gli utenti umani cat /etc/passwd | grep ':[1-9][0-9][0-9][0-9]:' # Lista tutti i gruppi cat /etc/group | cut -d: -f1 # Utenti in un gruppo members gruppo # Oppure: getent group gruppo | cut -d: -f4 ``` ## Vedi Anche - [Reference: Permessi Socket Docker](./docker-socket-permissions.md) - [How-To: Aggiungi Utente al Gruppo Docker](../how-to-guides/add-user-to-docker-group.md)