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 il root conto sulla sua testa. Ma mi ha lasciato un po 'confuso su esattamente cosa root conto è in discussione.

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

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

Risposte:


4

Il radice utente (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 motivi di sicurezza, alcuni processi vengono eseguiti come "utenti" diversi con privilegi minori rispetto al superutente radice . 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 del sistema non può accedere in modo interattivo.

Ad esempio un server web (nginx, apache, ...) verrà avviato da uno script in esecuzione con UID 0 (= radice ). 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)
  • disabilitare 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 delle mele non lo fosse dai un'occhiata validità dell'utente ma a impostato 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 / radice .


Cosa significa, in questo contesto, quello dscl . list /Users UserShellroot /bin/bash (anche se non ho accesso interattivo per quella configurazione)?
orome

@orome Ciò significa che il root l'utente, se fosse abilitato, otterrebbe /bin/bash come shell. Uso sudo /usr/bin/dscl . -create /Users/root UserShell /usr/bin/false per cambiarlo per una maggiore sicurezza.
nohillside

@patrix: E facendo ciò cambia semplicemente la shell rout prenderei Se era abilitato (ma non lo abilita), corretto?
orome

@orome Cos'altro ti aspetti di avere un impatto qui?
nohillside

@patrix: cosa ho chiesto riguardo parenteticamente. La risposta è segreta?
orome

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. Di solito, questi utenti hanno la propria shell impostata su /bin/false , non può accedere e può produrre file di proprietà di se stessi.

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 tu:

sudo find -x / ! \( -user root -o -user "$(id -un)" \) -exec ls -ld {} +

Le prime liste di comandi (a parte un gruppo di /usr/bin/false utenti): _mbsetupuser /bin/bash, _uucp /usr/sbin/uucico, root /bin/bash, e Rax /bin/bash.
orome
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.