Differenza tra root di accesso macOS e radice di Darwin Terminal

5

Il recente difetto di sicurezza principale in macOS 11.13. [1,2] ha trasformato il solito consiglio di non abilitare l'account root sulla sua testa. Ma mi ha lasciato un po 'confuso riguardo a quale account root è in discussione.

La shell di Darwin ha un account root elencato e ha molti file e directory elencati come di proprietà di root , ma macOS non ha account di accesso abilitato per root .

Qual è la differenza tra l'account root elencato come proprietario esistente per i file nel Terminale e l'account di accesso con root (disabilitato)?

    
posta orome 30.11.2017 - 15:09
fonte

2 risposte

4

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 .

    
risposta data 30.11.2017 - 18:42
fonte
3

La proprietà del file non richiede che un utente possa accedere. I file che eseguono il sistema operativo sono in genere di proprietà di root e vengono inseriti da un processo di installazione che richiede una qualche forma di autenticazione. Inoltre, il sistema operativo utilizza altri utenti che eseguono processi accanto a root. Questi utenti di solito hanno il loro set di shell su /bin/false , non possono accedere e possono produrre file di loro proprietà.

Per elencare gli utenti sul tuo sistema e la loro shell:

dscl . list /Users UserShell

Per trovare i file sul tuo sistema non di proprietà di root o:

sudo find -x / ! \( -user root -o -user "$(id -un)" \) -exec ls -ld {} +
    
risposta data 30.11.2017 - 17:58
fonte

Leggi altre domande sui tag