Warum gibt es unter macOS so viele gültige Benutzer?

Beim Durchlaufen des Aktivitätsmonitors sehe ich viele verschiedene Benutzer (außer meinem eigenen Konto und dem Root-Konto), die für einzelne Prozesse verantwortlich sind. Warum werden die Prozesse auf viele Benutzer aufgeteilt, die vom Betriebssystem erstellt werden? Warum werden sie nicht einfach auf das Root-Konto und das aktuell verwendete Benutzerkonto aufgeteilt?

Aktivitätsmonitor mit einer Liste verschiedener Benutzernamen mit vorangestelltem Unterstrich neben Prozessen.

Ich bin kein Experte, daher kann ich keine vollständige Antwort geben, aber Teile davon sind, dass Sie nicht möchten, dass jedes Programm oder jeder Teil der Software vollen Root-Zugriff hat.
Der Begriff dafür ist übrigens Dienstkonto (im Unterschied zu einem Benutzerkonto oder Adminkonto ).
Dies ist in der Unix- (MacOS, Solaris, BSD) und Linux-Welt normal. Das Ausführen eines Prozesses als Root ermöglicht es jedem, der diesen Prozess hackt, Code als Root auszuführen (da dieser Prozess bereits Root ist) und das Ausführen dieses Prozesses als Sie selbst, damit Hacker möglicherweise auf Ihre Dateien zugreifen können.
Ich denke, Erwähnungen von root/admin sind irreführend. Das Ziel ist, dass Dienstkonten nicht auf Dateien zugreifen können, die sie nicht haben sollen, wie z. B. Ihre persönlichen Dokumente

Antworten (1)

Dies ist das Prinzip der geringsten Privilegien .

Das Prinzip bedeutet, einem Benutzerkonto nur die Berechtigungen zu erteilen oder zu verarbeiten, die für die Erfüllung seiner beabsichtigten Funktion erforderlich sind. Beispielsweise muss ein Benutzerkonto, das ausschließlich zum Erstellen von Sicherungen dient, keine Software installieren: Daher hat es nur Rechte zum Ausführen von Sicherungen und sicherungsbezogenen Anwendungen. Alle anderen Privilegien, wie das Installieren neuer Software, werden blockiert.

https://en.wikipedia.org/wiki/Principle_of_least_privilege

Viele Daemons benötigen nur Zugriff auf ein bestimmtes Hardwaregerät oder auf bestimmte Dateien, sodass sie unter einem dedizierten Benutzerkonto ausgeführt werden. Dies geschieht aus Sicherheitsgründen: Auf diese Weise kann selbst ein Fehler oder eine Fehlkonfiguration in einem dieser Dienste nicht zu einem vollständigen Systemangriff führen, da der Angreifer darauf beschränkt ist, was dieser Dienst tun kann und was nicht in der Lage, Dateien zu überschreiben, Prozesse auszuspionieren usw.

https://unix.stackexchange.com/a/197155/45383

Fantastische Antwort, ich würde hinzufügen, dass es immer noch viele Fälle gibt, in denen ein Dienstkonto mehr Rechte hat, als jeder seiner Prozesse unbedingt benötigt. Sie werden jedoch zu Dienstkonten gruppiert, da von 10 Berechtigungen, die für jeden Prozess benötigt werden, 9 gemeinsam genutzt werden und es eine zusätzliche gibt, die jeder Prozess selbst benötigt. O.ä. Das Prinzip der geringsten Rechte wird fast immer durch eine praktische Verwaltung der Software ausgeglichen . Vielleicht nicht der Fall in OSX, ich habe keine Ahnung von den Interna, aber in den meisten realen Fällen, die ich gesehen habe .
Beispielsweise ist es möglich, sich als „virtueller Benutzer“ „_coreaudiod“ anzumelden. Bisher kenne ich nur 2 User. Nämlich die user directoryund root. Vielen Dank
@DarwinOSX Die meisten Dienstkonten können nicht als Anmeldekonten verwendet werden (und auf einem System, das modernen Praktiken entspricht, kann sich das Root-Konto auch nicht anmelden).
+1 Ein menschliches Beispiel wäre ein großes Geschäftsgebäude, Krankenhaus, Flughafen usw. Nicht jeder Mitarbeiter erhält denselben Hauptschlüssel, der alle Türen, Safes, Schlösser, Fenster und Hauswirtschaftsräume in der gesamten Einrichtung öffnet. Menschen erhalten Schlüssel, mit denen sie nur die Türen öffnen können, die sie für ihre Arbeit benötigen.
@DarwinOSX, insbesondere die Anmelde-Shell ist wahrscheinlich deaktiviert (Shell ist /dev/nulloder gleichwertig), sodass Sie sich nicht per se "anmelden" können, aber Sie können als Dienstbenutzer fungieren, indem Sie suund andere UID-Änderungstools verwenden.
@Randall Beachten Sie, dass die Deaktivierung der Anmeldung für einen Benutzer nicht unbedingt bedeutet, dass Sie nicht manuell als dieser Benutzer agieren können. Beispielsweise sudo basherhalten Sie eine interaktive Shell wie rootauf vielen Linux-Rechnern. Wenn Sie wissen, was Sie tun, können Sie vielleicht sogar die Desktop-Umgebung starten.
@WillChen While sudo ...erlaubt einem autorisierten Benutzer, eine Aktion als ein anderer Benutzer auszuführen, die keine Anmeldung als dieser Benutzer darstellt (da nichts den (in Ihrem Beispiel) Benutzer authentifiziert. Abgesehen von rooteiner erheblichen Fehlkonfiguration (wie das Zulassen beliebiger sudo-Befehle ohne Authentifizierung) , können beliebige Befehle nicht heimlich ausgeführt werden, falls ein Fehler in einem anderen Programm ausgenutzt wird.