L'utente root (UID 0) esiste in ogni sistema operativo Unix o Unix. Ogni processo di un sistema operativo Unix deve essere eseguito come utente / UID valido, indipendentemente dai processi di sistema, daemon, servizi o applicazioni avviate dall'utente. Ogni processo di sistema di base viene eseguito con UID 0 (root) e ogni file pertinente al sistema è di proprietà dell'utente. Per ragioni di sicurezza, alcuni processi sono eseguiti come "utenti" diversi con privilegi minori rispetto al superuser root . Tali utenti sono lì per il solo scopo di avviare servizi, come un server web, un database, il server della finestra e così via. Ciò significa che non tutti gli utenti configurati su Unix (o macOS) sono utenti "reali". In effetti, la maggior parte di questi utenti non può accedere in modo interattivo.
Ad esempio un server web (nginx, apache, ...) verrà avviato da uno script in esecuzione sotto UID 0 (= root ). Successivamente, il processo del server Web rilascia i privilegi a un UID specifico (in questo caso, potrebbe essere l'utente www ). www non è un vero utente e non può essere utilizzato per accedere al sistema in modo interattivo.
Esistono due modi per "disattivare" un utente (di sistema):
- imposta la shell utente su / bin / false (o qualsiasi shell non valida)
- disabilita la password dell'utente, impostandola su un valore non valido, vuoto o specifico.
Su macOS AFAIK un utente non valido ha una password vuota e una proprietà specifica impostata sul server OpenDirectory locale.
Di solito, per una richiesta come "è un utente valido" il servizio OpenDirectory in macOS esegue un semplice controllo sull'utente richiesto e restituisce true (l'utente può accedere) o false (l'utente non può accedere).
Sembra che il bug di Apples non fosse quello di controllare la validità dell'utente, ma di impostarlo su abilitato. Sugli account già abilitati questo non ha avuto alcun effetto, ma gli account disabilitati sono diventati account validi e abilitati. E poiché un utente disabile non ha password, è stata accettata una password vuota come opzione valida per accedere come superutente / root .