Wann wurden diese Benutzer erstellt?
In den von Ihnen erwähnten Fällen wurden sie bei der Systeminstallation erstellt. Diese Benutzerkonten sind konventionell und stammen teilweise aus Jahrzehnten. Sie sind auch standardisiert. Die Linux Standard Base unterteilt sie in:
- die erforderlichen Standard - Benutzerkonten,
root
, bin
, und daemon
; und
- die optionalen Standard - Benutzerkonten
adm
, lp
, sync
, shutdown
, halt
, mail
, news
, uucp
, operator
, man
, undnobody
Andere Benutzerkonten , die hier genannt werden - pulse
, avahi
, colord
und Debian-exim
(holen ein von py4on-Passwort - Datei) - uns auf die nächste Frage bringen.
Wie hängen diese mit der Installation neuer Programme zusammen?
Die nicht standardmäßigen Benutzerkonten werden von den "Betreuerskripten" für verschiedene Pakete erstellt und gelöscht, wenn diese Pakete installiert und gelöscht werden. Ein Benutzerkonto wird durch das sogenannte postinst
Betreuerskript des Pakets erstellt. Es wird ausgeführt getent
, um festzustellen, ob das Benutzerkonto bereits vorhanden ist und useradd
ob dies nicht der Fall ist. Theoretisch würde es durch das sogenannte postrm
Betreuerskript des Pakets gelöscht , das ausgeführt wird userdel
.
In der Praxis werden Benutzerkonten für Pakete nicht gelöscht. Das Fedora-Wiki (siehe dort) erklärt, dass dies mit Schwierigkeiten verbunden wäre. Siehe Debian Bug # 646175 ein Beispiel für dieses Grundprinzip in Aktion, wo entschieden wird , einfach nicht das löschen rabbitmq
Benutzerkonto , wenn das Paket gelöscht wird, ein Problem mit einem Dæmon zu lösen , die unter der Schirmherrschaft des Kontos laufen weiter.
Wie wurden diese Programme mit unterschiedlichen UIDs gestartet?
Unter Unix und Linux kann ein Prozess, der unter der Ägide des Superuser ausgeführt wird, sein Benutzerkonto in etwas anderes ändern und dasselbe Programm weiter ausführen, aber das Gegenteil ist nicht zulässig. (Man muss den Set-UID-Mechanismus verwenden.)
Das Daemon-Management-System wird als Superuser ausgeführt. Die Konfigurationsdaten geben an, dass bestimmte Dæmons unter der Ägide bestimmter Benutzerkonten ausgeführt werden:
- Bei System 5 verwendet
rc
das Skript /etc/init.d
ein Hilfswerkzeug wie start-stop-daemon
und dessen --chuid
Option.
- Mit einem daemontools Familie Service - Managern, die
run
Skript Anrufe setuidgid
, s6-setuidgid
, chpst
, oder runuid
mit dem Benutzerkontonamen. Beispiele hierfür finden Sie unter /unix//a/179798/5132 , mit denen das nagios
Benutzerkonto festgelegt wird.
- Mit upstart gibt es eine
setuid
Zeilengruppe in einer Jobdatei, die das Benutzerkonto angibt. Dies ist nicht besonders feinkörnig, und manchmal möchte man das, was unter /superuser//a/723333/38062 beschrieben ist .
- Bei systemd gibt es eine
User=
Einstellung in der Service Unit-Datei, die das Benutzerkonto angibt.
Wenn das Dæmon-Verwaltungssystem einen Prozess als Dæmon hervorruft, werden durch diese Mechanismen Superuser-Berechtigungen gelöscht, sodass der Dæmon-Prozess weiterhin unter der Ägide des nicht privilegierten Benutzerkontos ausgeführt wird.
Es gibt eine ziemlich lange Erklärung, warum ein gutes Dæmon-Management auf diese Weise erfolgt. Aber du hast nicht gefragt warum; nur wann, wie und woher. ☺ Eine sehr kurze Zusammenfassung, deshalb:
Unix- und Linux-Betriebssysteme isolieren Prozesse, die unter verschiedenen Benutzerkonten ausgeführt werden, voneinander. In der Vergangenheit konnte man alles tun, was man wollte, wenn man ein Dæmon übernehmen konnte, das als Superuser lief. Ein Dæmon, das unter der Ägide eines nicht privilegierten Kontos ausgeführt wird, kann hingegen nur auf Dateien, Verzeichnisse, Geräte und Prozesse zugreifen, die mit diesem nicht privilegierten Konto möglich sind. Ein System, in dem sich dæmon-Programme gegenseitig nicht vertrauen, die alle unter der Ägide verschiedener Benutzerkonten ausgeführt werden und nicht auf die (internen, vertrauenswürdigen) Dateien / Verzeichnisse / Prozesse / Geräte des anderen zugreifen / diese steuern können, ist daher umso schwieriger zu knacken.
Weitere Lektüre