Ich verwende ein Ubuntu 12.04-Desktopsystem. Bisher habe ich nur einige Programme installiert (ich habe Sudo-Rechte).
Wenn ich die Liste der Benutzer auf dem System überprüfe, sehe ich eine lange Liste mit mehr als 20 Benutzern. Wann wurden diese Benutzer erstellt (z. B. Daemon, Sys, Sync, Spiele, Puls usw.)? Wie hängen diese mit der Installation neuer Programme zusammen?
Wenn ich ein Programm auf meinem System ausführe, sollte es mit meiner UID ausgeführt werden. Aber wenn ich einen ps mache , sehe ich viele andere Programme mit unterschiedlichen UIDs (wie root, daemon, avahi, syslog, colord usw.) - wie wurden diese Programme mit unterschiedlichen UIDs gestartet?
Antworten:
Benutzerkonten werden nicht nur für tatsächliche, menschliche Benutzer verwendet, sondern auch zum Ausführen von Systemdiensten und manchmal als Eigentümer von Systemdateien. Dies geschieht, weil die Trennung zwischen den Ressourcen des Benutzers (Prozesse, Dateien usw.) und der Trennung zwischen den Ressourcen der Systemdienste dieselben Mechanismen erfordert.
Die Programme, die Sie ausführen, werden normalerweise mit Ihrer Benutzer-ID ausgeführt. Es sind nur System- Daemons , die unter ihrem eigenen Konto ausgeführt werden. Entweder gibt die Konfigurationsdatei, die angibt, wann der Dämon ausgeführt werden soll, auch an, welcher Benutzer ihn ausführen soll, oder der Dämon wechselt nach dem Start zu einem nicht privilegierten Konto. Einige Daemons erfordern vollständige Administratorrechte, sodass sie unter dem Root- Konto ausgeführt werden. 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 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.
Unter Ubuntu werden Benutzer-IDs im Bereich von 0 bis 99 bei der Systeminstallation erstellt. 0 ist root; Viele der Einträge im Bereich 1–99 existieren nur aus historischen Gründen und werden nur aus Gründen der Abwärtskompatibilität mit einigen lokalen Installationen, die sie verwenden, aufbewahrt (einige zusätzliche Einträge schaden nicht). Benutzer-IDs im Bereich von 100 bis 999 werden dynamisch erstellt und entfernt, wenn Dienste installiert oder entfernt werden, die eine dedizierte Benutzer-ID benötigen. Der Bereich ab 1000 richtet sich an Benutzer oder andere vom Systemadministrator erstellte Konten. Gleiches gilt für Gruppen.
quelle
Ich nehme an, Sie finden diese Liste von Benutzern, indem Sie überprüfen
/etc/passwd
? Dies ist völlig normal - Benutzer dienen dazu, eine Reihe von Berechtigungen zu übertragen, die nicht nur zum Sperren von "tatsächlichen Benutzern", sondern auch zum Nachverfolgen von Änderungen in bestimmten Systembereichen (dasselbe Konzept mit Gruppen) nützlich sind.Ich habe eine meiner Himbeer-Pi-
/etc/passwd
Dateien unten als Referenz eingefügt . Sie werden den Benutzerntop
am Ende dieser Datei bemerken , die vom Programm erstellt wurdentop
(Netzwerküberwachung). Ebensosshd
,gnats
Bug - Reporting usw.quelle
dpkg --get-selections | grep -v deinstall
und mit Ihrer / etc / passwd-Dateiliste von Benutzern vergleichen, wenn Sie möchten. Was Ihre Frage betrifft: "... wie werden diese Programme mit einer unterschiedlichen UID ausgeführt?", Können Sie dies selbst versuchen. Schreiben Sie ein zufälliges Bash-Skripttest_file
, das etwas Unschädliches enthält (echo "Test"
). Dannsudo chmod 755 test_file
(so ist es für jeden lesbar und ausführbar und für den Besitzer lesbar, beschreibbar und ausführbar)sudo chown nobody
wird es dem Benutzer zugewiesennobody
. Führen Sie es dann aus. Das 'Programm'test_file
lief gerade mit der UIDnobody
.nobody
UID, aber es lief mit Ihrer UID; Sie müssten dafür eine SUID-Datei erstellen, aber das SUID-Bit wird gelöscht, wenn die Datei mit einem Interpreter ausgeführt wird.dpkg
Bit immer noch nützlich ist (hoffentlich) bitte den Teil über ignorieren läuft es wie du selbst! Gehen Sie entweder mit SUID oder melden Sie sich als anderer Benutzer an, damit dies Sinn machtIn 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:
root
,bin
, unddaemon
; undadm
,lp
,sync
,shutdown
,halt
,mail
,news
,uucp
,operator
,man
, undnobody
Andere Benutzerkonten , die hier genannt werden -
pulse
,avahi
,colord
undDebian-exim
(holen ein von py4on-Passwort - Datei) - uns auf die nächste Frage bringen.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ührtgetent
, um festzustellen, ob das Benutzerkonto bereits vorhanden ist unduseradd
ob dies nicht der Fall ist. Theoretisch würde es durch das sogenanntepostrm
Betreuerskript des Pakets gelöscht , das ausgeführt wirduserdel
.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.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:
rc
das Skript/etc/init.d
ein Hilfswerkzeug wiestart-stop-daemon
und dessen--chuid
Option.run
Skript Anrufesetuidgid
,s6-setuidgid
,chpst
, oderrunuid
mit dem Benutzerkontonamen. Beispiele hierfür finden Sie unter /unix//a/179798/5132 , mit denen dasnagios
Benutzerkonto festgelegt wird.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 .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
quelle
Unter Linux wird bei der Installation eines Dienstes ein Benutzer mit seinem Dienstnamen oder ähnlichem erstellt, damit er nicht auf andere Dateien zugreifen kann.
quelle