Cos'è#
File di testo pubblico che definisce tutti gli account del sistema — utenti umani, utenti di sistema e demoni. Per ogni account specifica username, UID, GID, home directory e shell da lanciare alla connessione. Leggibile da tutti perché molti programmi ne hanno bisogno, ma le password stanno in /etc/shadow che è accessibile solo a root.
Anatomia di una riga#
Ogni riga è composta da 7 campi separati da due punti (:).
getent passwd barno
barno:x:1000:1000:barno,,,:/home/barno:/usr/bin/zsh root : x : 0 : 0 : root : /root : /bin/bash
│ │ │ │ │ │ └─ 7. Shell (il guscio)
│ │ │ │ │ └─────────── 6. Home Directory
│ │ │ │ └─────────────────── 5. Info (GECOS)
│ │ │ └───────────────────────── 4. GID Primario
│ │ └───────────────────────────── 3. UID (0 = ROOT)
│ └───────────────────────────────── 2. Password Placeholder (x)
└─────────────────────────────────────── 1. UsernameCampi critici per la sicurezza#
- UID 0: Qualsiasi utente con UID 0 è, per il kernel, l'utente Root, indipendentemente dal nome.
- Password (x): Se vedi una
x, significa che l'hash della password è protetto nel file/etc/shadow. Se vedessi un hash o un campo vuoto, il sistema sarebbe vulnerabile. - Shell (/bin/bash vs /usr/sbin/nologin): Gli utenti di sistema hanno solitamente
nologinofalsecome shell per impedire il login. Ma la shell può essere qualsiasi eseguibile — non solo bash o zsh. Quando ti connetti via SSH, il server lancia esattamente quel programma. Se quel programma non è una shell interattiva, non ottieni un prompt — ottieni qualunque cosa il programma faccia prima di uscire.
Per vedere la shell di un utente specifico:grep "^bandit26" /etc/passwd | cut -d: -f7
- Shell (/bin/bash vs /usr/sbin/nologin): Gli utenti di sistema hanno solitamente
Scenario Reale (Privilege Escalation)#
Un attaccante che ottiene permessi di scrittura su questo file può:
Cambiare il proprio UID a
0.Creare un nuovo utente "backdoor" con UID
0.Cambiare la propria shell in una shell privilegiata.
Collegato a#
- system — categoria
- uid-gid-identifiers — concetto
- linux-groups — concetto
- user-management-cheatsheet — comandi
- bandit-26



