Systemd Dienst-Privat /tmp=
Zur Navigation springen
Zur Suche springen
- Ein weiterer sehr einfacher, aber leistungsfähiger Konfigurationsschalter ist PrivateTmp=:
... [Service] ExecStart=... PrivateTmp=yes*Im obigen Beispiel werden nur die CAP_CHOWN- und CAP_KILL-Fähigkeiten vom Dienst beibehalten, und der Dienst und alle Prozesse, die er möglicherweise erstellt, haben keine Chance, jemals wiederIsolieren von Diensten vom Netzwerk
...
- Wenn diese Option aktiviert ist, stellt sie sicher, dass das /tmp-Verzeichnis, das der Dienst sieht, privat und vom /tmp des Hostsystems isoliert ist.
- /tmp war traditionell ein gemeinsam genutzter Bereich für alle lokalen Dienste und Benutzer.
- Im Laufe der Jahre war es eine Hauptquelle von Sicherheitsproblemen für eine Vielzahl von Diensten.
- Symlink-Angriffe und DoS-Schwachstellen aufgrund erratbarer temporärer /tmp-Dateien sind häufig.
- Indem das /tmp des Dienstes vom Rest des Hosts isoliert wird, werden solche Schwachstellen hinfällig.
- Achtung: Einige Dienste missbrauchen /tmp tatsächlich als Speicherort für IPC-Sockets und andere Kommunikationsprimitive, obwohl dies fast immer eine Schwachstelle ist und /run ist der viel sicherere Ersatz dafür, Eeinfach weil es kein Ort ist, auf den nichtprivilegierte Prozesse schreiben können.
- Zum Beispiel platziert X11 seine Kommunikations-Sockets unterhalb von /tmp (was eigentlich sicher ist – wenn auch immer noch nicht ideal – in dieser Ausnahme, da es dies in einem sicheren Unterverzeichnis tut, das beim frühen Booten erstellt wird).
- Dienste, die über solche kommunizieren müssen Kommunikationsprimitive in /tmp sind keine Kandidaten für PrivateTmp=.
- Glücklicherweise sind heutzutage nur noch sehr wenige Dienste übrig, die /tmp so missbrauchen.
- Intern nutzt diese Funktion Dateisystem-Namensräume des Kernels. Wenn aktiviert, wird ein neuer Dateisystem-Namensraum geöffnet, der den größten Teil der Hosthierarchie mit Ausnahme von /tmp erbt.