Cosa fa#
Insieme di comandi per amministrare il ciclo di vita di utenti e gruppi sul sistema. Ogni modifica aggiorna /etc/passwd, /etc/group e /etc/shadow in modo coordinato.
TL;DR#
sudo adduser mario # crea utente mario con home e password
sudo usermod -aG sudo mario # aggiungi mario al gruppo sudo
sudo userdel -r mario # elimina mario e la sua home
sudo passwd mario # cambia la password di mario
sudo chown mario:mario file # cambia proprietario del file
lastlog # mostra ultimo login di tutti gli utentiCreazione e modifica utenti#
| Comando | Cosa fa | Note |
|---|---|---|
sudo adduser nome | Crea utente interattivo | Crea home, chiede password — preferito su Debian/Ubuntu |
sudo useradd nome | Crea utente non interattivo | Non crea home automaticamente — richiede flag aggiuntivi |
sudo useradd -m -s /bin/bash nome | Crea utente con home e shell | -m = crea home, -s = shell specifica |
sudo usermod -aG gruppo utente | Aggiunge utente a gruppo | -a = append — OBBLIGATORIO, senza sovrascrive i gruppi |
sudo usermod -s /bin/bash utente | Cambia shell dell'utente | Modifica il settimo campo in /etc/passwd |
sudo usermod -L utente | Blocca l'account | Lock — aggiunge ! all'hash in /etc/shadow |
sudo usermod -U utente | Sblocca l'account | Unlock — rimuove il ! |
sudo userdel utente | Elimina utente | La home rimane sul disco |
sudo userdel -r utente | Elimina utente e home | -r = remove — cancella home e mail spool |
sudo passwd utente | Cambia password | Senza argomento cambia la tua |
Gestione gruppi#
| Comando | Cosa fa | Note |
|---|---|---|
sudo groupadd nome | Crea nuovo gruppo | |
sudo groupdel nome | Elimina gruppo | Fallisce se e' il gruppo primario di un utente |
sudo groupmod -n nuovo vecchio | Rinomina gruppo | |
getent group nome | Mostra membri del gruppo | Alternativa a cat /etc/group |
id utente | Mostra UID, GID e gruppi | Rapido per verificare appartenenze |
Cambio proprietario file#
| Comando | Cosa fa | Esempio |
|---|---|---|
sudo chown utente file | Cambia proprietario | sudo chown mario file.txt |
sudo chown utente:gruppo file | Cambia proprietario e gruppo | sudo chown mario:devs file.txt |
sudo chown :gruppo file | Cambia solo il gruppo | sudo chown :devs file.txt |
sudo chown -R utente:gruppo dir/ | Ricorsivo su directory | -R = recursive |
sudo chgrp gruppo file | Cambia solo il gruppo | Equivalente a chown :gruppo |
Ispezione e audit#
| Comando | Cosa fa | Note Blue Team |
|---|---|---|
lastlog | Ultimo login di tutti gli utenti | Utenti che non si sono mai loggati mostrano "Never logged in" |
lastlog -u utente | Ultimo login di un utente specifico | -u = user |
last | Lista login recenti (wtmp) | Include login, logout e riavvii |
last utente | Login recenti di un utente | |
sudo lastb | Login falliti (btmp) | Richiede sudo — file /var/log/btmp |
id utente | UID, GID, gruppi | Verifica rapida appartenenze |
getent passwd utente | Info complete dall'account | Mostra tutti i 7 campi |
adduser vs useradd — la differenza#
# adduser — script interattivo (Debian/Ubuntu)
sudo adduser mario
# Fa tutto: crea home /home/mario, chiede nome completo,
# chiede password, crea gruppo mario automaticamente
# useradd — comando POSIX di basso livello
sudo useradd mario
# NON crea home, NON imposta password, NON chiede nulla
# Devi aggiungere -m -s /bin/bash e poi passwd
# Regola pratica: usa adduser quando sei su Ubuntu/Kali
# Usa useradd negli script (controllo totale)Refresh dei privilegi dopo usermod#
Quando aggiungi un utente a un gruppo con usermod -aG, la modifica
e' nel database ma la sessione corrente dell'utente non si aggiorna —
e' come una fotografia scattata al login che non cambia.
Per applicare immediatamente senza logout:
su - nomeutente # se hai sudo
newgrp nomegruppo # cambia gruppo primario nella sessione correnteSe l'utente non ha sudo, deve fare logout e login.
su nome_utente- cambi utente ma mantieni buona parte dell’ambiente del chiamante: variabili d’ambiente,PATHin parte ereditato, working directory invariata, ecc. È come dire “esegui una shell come quell’utente, ma dentro il mio contesto attuale”.su - nome_utente(osu -l nome_utente)- avvii una login shell “pulita” per quell’utente, come se avesse fatto login da zero: vengono caricati i suoi file di configurazione di login (
.profile,.bash_profile, ecc.), viene impostata la suaHOMEcome directory corrente,PATHe altre variabili vengono settate come previsto per quell’utente. È il modo “corretto” per impersonarlo davvero.
- avvii una login shell “pulita” per quell’utente, come se avesse fatto login da zero: vengono caricati i suoi file di configurazione di login (
/etc/shadow — formato password#
sudo less /etc/shadow
# Formato di una riga:
# utente:$id$salt$hash:ultimocambio:minimo:massimo:avviso:inattivo:scadenza
#
# Il campo password:
# $6$ = SHA-512 (standard moderno)
# $5$ = SHA-256
# $y$ = yescrypt (Ubuntu/Kali recenti)
# $1$ = MD5 (vecchio, insicuro)
# ! = account bloccato (usermod -L)
# * = account senza password (utenti di sistema)
#
# Esempio:
# barno:$y$j9T$abc123salt$hash_lungo:19800:0:99999:7:::
# ^
# yescrypt — sistema modernoIl salt e' casuale per ogni utente. Due utenti con la stessa password hanno hash completamente diversi. Questo blocca i rainbow table attack — non puoi precomputare gli hash perche' non conosci il salt.
/etc/group — struttura#
cat /etc/group | grep -i barno
# Formato:
# nome_gruppo:x:GID:lista_membri
#
# barno:x:1000: <- barno e' il PROPRIETARIO del gruppo barno
# kaboxer:x:130:barno <- barno e' MEMBRO del gruppo kaboxer
#
# Il quarto campo e' la lista dei membri aggiuntivi.
# Se sei il proprietario (primary group), il tuo nome non si ripete nel quarto campo.Scenario Reale#
# ATTACCO — creazione backdoor utente
# Un attaccante con accesso root crea un utente nascosto:
sudo useradd -m -u 0 -o -g 0 -s /bin/bash backdoor
# -u 0 = UID 0 (root) anche se il nome e' diverso
# -o = permette UID duplicato
# DIFESA — rilevamento utenti con UID 0 non autorizzati
awk -F: '$3 == 0 {print $1}' /etc/passwd
# Dovrebbe restituire SOLO "root" — qualsiasi altro nome e' anomalo
# Verifica utenti creati di recente (modifiche a /etc/passwd):
ls -la /etc/passwd # controlla timestamp
# oppure con auditd (mese 4+)usermod -aG — il flag -a (append) e' critico. Senza -a, -G sovrascrive tutti i gruppi dell'utente con solo quelli specificati. Un sudo usermod -G docker mario rimuoverebbe mario da sudo, wheel e tutti gli altri gruppi.
Orphaned File — file senza utente#
Durante un'analisi forense trovi un file in /tmp con UID 1005 ma getent passwd 1005 non restituisce nulla. Sei davanti a un
orphaned file — residuo di un utente eliminato o tentativo di un attaccante di creare file con ID non mappati per evadere
il monitoraggio standard.
# Trova tutti i file orphaned (UID senza utente corrispondente)
find / -nouser 2>/dev/null
find / -nogroup 2>/dev/nullCollegato a#
- iam — categoria
- system — categoria
- sudo — gestione privilegi
- su — cambio utente interattivo
- linux-permissions-ugo — sistema permessi
- linux-groups — concetto gruppi
- etc-passwd-anatomy — struttura file utenti


