Ursprünglich sollten Benutzer einem Menschen entsprechen, der das System verwendet, daher der Name. Jeder Prozess wird als bestimmter Benutzer ausgeführt und jede Datei gehört einem bestimmten Benutzer. Ein spezieller Benutzer namens root wird für Dinge verwendet, die keinem bestimmten menschlichen Benutzer gehören, dh dem Betriebssystem selbst. Da root dem Betriebssystem selbst entspricht, verfügt es über alle Berechtigungen.
Bald fanden die Leute, dass es bequem war, mehrere Systembenutzer ohne umfangreiche Berechtigungen zu erstellen. Auf diese Weise können die verschiedenen Dienste, die auf einem Computer ausgeführt werden, isoliert werden, sodass sie sich nicht gegenseitig auf die Füße treten. Ein Dienstkonto (oder „Systemkonto“, diese beiden Begriffe sind Synonyme) entspricht einem Dienst, der auf dem System ausgeführt wird, und nicht jemandem, der das System verwendet. Im Allgemeinen verfügen Sie über ein Dienstkonto für jede auf dem System ausgeführte Aufgabe, die über eigene Berechtigungen verfügt (z. B. eigene Dateien, eigene Netzwerkports usw.).
Es gibt keine formale Definition von Mensch vs. System / Dienstkonto. Der Kernel kümmert sich nicht darum (außer dem Benutzer mit der UID 0 viele Berechtigungen zu gewähren). Die meisten Administrationsbefehle kümmern sich auch nicht darum. Einige typische Unterschiede sind:
- Ein menschlicher Benutzer hat einen echten Namen wie "John Doe", während ein Systembenutzer einen beschreibenden Namen wie "Nasal Daemon" oder gar keinen hat.
- Ein menschlicher Benutzer hat eine echte Login - Shell (zB
/bin/sh
oder /bin/bash
oder /bin/csh
. Einige Systembenutzer haben eine Shell (fast immer /bin/sh
), andere nicht tun, je nachdem , wie sie verwendet werden sollen (zB su foo
erfordert foo
eine Schale haben).
- Ein menschlicher Benutzer verfügt häufig über ein Kennwort. Dies ist jedoch nicht immer der Fall. Beispielsweise verfügt ein reiner Remote-Benutzer möglicherweise nur über einen SSH-Schlüssel. Beachten Sie, dass sich das Passwort bei modernen Unices nicht in,
/etc/passwd
sondern in einer anderen Datei befindet, z /etc/shadow
.
- Das Home-Verzeichnis eines menschlichen Benutzers befindet sich normalerweise unter
/home
(oder an einem standortspezifischen Ort), wohingegen sich das Home-Verzeichnis eines Systembenutzers normalerweise nicht unter befindet /home
und möglicherweise nicht existiert (es gibt jedoch Ausnahmen).
- Die meisten Sites legen einen Bereich von Benutzer-IDs für Systembenutzer und einen nicht zusammenhängenden Bereich für menschliche Benutzer fest. Die Reservierung von 100 bis 65533 oder 500 bis 65533 oder 1000 bis 65533 ist typisch, und die meisten Verteilungen sind so eingerichtet, dass echte Benutzer-IDs ab 500 oder 1000 zugewiesen werden.
An Standorten, an denen Konten auf mehreren Computern gemeinsam genutzt werden, gibt es normalerweise einen zentralen Server mit Benutzerlisten, auf die über NIS oder LDAP zugegriffen werden kann . Der passwd
Eintrag in /etc/nsswitch.conf
gibt an, wo Benutzerinformationen zu finden sind. Es ist üblich, Systembenutzer in den lokalen /etc/passwd
und realen Benutzern der netzwerkweiten Datenbank zu haben, aber manchmal gibt es Systembenutzer in der netzwerkweiten Datenbank (um konsistente UIDs zu erzwingen, was die Server- und Datenreplikation erleichtert), und manchmal gibt es solche Benutzer menschliche Benutzer in der lokalen Datei (damit sie sich anmelden können, auch wenn das Netzwerk überlastet ist).
Ein für Menschen zugängliches Konto, das als Systembenutzer getarnt ist, hat normalerweise keinen echten Namen, sondern eine Anmeldeshell und entweder ein Kennwort oder einen SSH-Schlüssel, während sich eine Benutzer-ID im Systembereich befindet. Tatsächlich wäre es besser, ein tatsächliches Systemkonto zu verwenden, dessen Entfernung dazu führen würde, dass ein Dienst nicht mehr funktioniert. Sie können jedoch keine festen Regeln für die Erkennung potenzieller Angriffe festlegen: Angreifer befolgen per Definition keine Regeln.
Dienstkonten und Benutzerkonten werden mit denselben Befehlen verwaltet und in denselben Dateien aufgezeichnet. Befehle zur Kontoerstellung können Optionen enthalten, mit denen Sie angemessene Standardeinstellungen für Benutzer im Vergleich zu Dienstbenutzern festlegen können, z. B. eine Benutzer-ID im richtigen Bereich auswählen und zur Eingabe eines Kennworts für einen Benutzer auffordern und die Kennwortauthentifizierung für einen Dienst deaktivieren können. Zum Beispiel adduser
vs adduser --system
oder useradd
vs useradd -r
unter Linux.