Es wird nicht ein Benutzer und eine Gruppe pro Anwendung, sondern pro Dienst erstellt. Das heißt, Programme, die von einem lokalen Benutzer ausgeführt werden, müssen nicht als anderer Benutzer als root installiert werden. Es sind Dämonen , Programme, die im Hintergrund ausgeführt werden und Anforderungen ausführen, die über das Netzwerk oder andere Kommunikationsmittel eingehen, die als dedizierter Benutzer ausgeführt werden sollten.
Der Dämon wird als dedizierter Benutzer ausgeführt, sodass der Schaden, den er anrichten kann, begrenzt ist, wenn er sich schlecht verhält (aufgrund eines Fehlers, der wahrscheinlich von einem Angreifer ausgelöst wird): Nur die Datendateien des Dämons sind betroffen (es sei denn, der Angreifer hat es geschafft, ein lokales Stammloch zu finden , was passieren kann). Beispielsweise wird der Datenbankdämon mysqld
als dedizierter Benutzer und Gruppe ausgeführt, mysql:mysql
und die Datendateien der Datenbank ( /var/lib/mysql/*
) gehören dazu mysql:mysql
.
Beachten Sie, dass die ausführbare Datei des Dämons und andere statische Daten und Konfigurationsdateien, die verwendet werden, aber nicht vom Dämon geändert werden sollten, nicht dem dedizierten Benutzer gehören dürfen. Sie sollten root:root
wie die meisten Programm- und Konfigurationsdateien Eigentum von sein . Der mysqld
Prozess hat kein geschäftliches Überschreiben /usr/sbin/mysqld
oder /etc/mysql/my.cnf
, daher dürfen diese Dateien nicht dem mysql
Benutzer gehören oder vom mysql
Benutzer oder der mysql
Gruppe beschreibbar sein. Wenn einige Dateien nur vom Dämon und vom Administrator gelesen werden müssen, sollten sie dem Benutzer root und der dedizierten Gruppe gehören und den Modus 0640 ( rw-r-----
) haben.
Eine spezielle Kategorie von ausführbaren Dateien, deren Eigentümer nicht sein kann root:root
, sind Programme, die von einem Benutzer aufgerufen werden, aber mit zusätzlichen Berechtigungen ausgeführt werden müssen. Diese ausführbaren Dateien müssen setuid root sein, wenn sie (zumindest teilweise) als root ausgeführt werden müssen. dann muss die ausführbare Datei den Modus 4755 ( rwsr-xr-x
) haben. Wenn das Programm zusätzliche Berechtigungen benötigt, jedoch nicht als Root, sollte das Programm auf setgid gesetzt werden, damit die zusätzlichen Berechtigungen über eine Gruppe und nicht über einen Benutzer erfolgen. Die ausführbare Datei hat dann den Modus 2755 ( rwxr-sr-x
). Es gibt zwei Gründe:
- Die ausführbare Datei sollte sich nicht selbst ändern dürfen. Wenn ein Benutzer eine Sicherheitsanfälligkeit ausnutzt, kann er möglicherweise die vom Programm verwendeten Datendateien ändern, jedoch kein Trojaner in die ausführbare Datei einfügen, um andere Benutzer anzugreifen, die das Programm ausführen .
- Die Datendatei der ausführbaren Datei gehört zur Gruppe. Ein setuid-Programm müsste zwischen dem realen Benutzer (dem Benutzer, der das Programm aufgerufen hat) wechseln, um mit dem Benutzer zu interagieren, und dem effektiven Benutzer (dem Benutzer, unter dem das Programm ausgeführt wird), um auf seine privaten Datendateien zuzugreifen (der Grund dafür) zusätzliche Privilegien haben). Ein setgid-Programm kann außerdem Benutzerdaten trennen, auf die nur die Gruppe zugreifen kann (z. B. indem Dateien des Benutzers in einem Verzeichnis gespeichert werden, auf das nur root und die Programmgruppe zugreifen können).