ternaryd: > On Tue, 30 Apr 2019 20:49:35 +0200 > Jochen Spieker <ml@well-adjusted.de> wrote: > >> Da wird nichts verschoben, der Prozess kriegt >> einfach seine eigene Version des Dateisystems >> (Stichwort "filesystem namespace"). Das ist >> ein von systemd grundsätzlich unabhängiges >> Feature von Linux. > > Relativ neues feature, *hust* Laut Wikipedia fing die Arbeit an Namespaces, insbesondere für Mounts, schon in 2.4 im Jahre 2002 an. :) Aber ja, richtig prominent benutzt wird das nach meinem Eindruck erst so seit vielleicht fünf Jahren. Ist allerdings auch schon eine recht lange Zeit. >> Wenn Dir die Entscheidung des Maintainers >> nicht gefällt, kannst Du das auch >> überschreiben ("override"). > > Ist nicht mein Thema, so misch ich mich nicht > ein. Du sollst Dich nicht einmischen, Du sollst Dein System mit den vorhandenen Mitteln administrieren, anstatt hier uninformiert über systemd zu lästern. :) >> Man muss sicher nicht alles gut finden, was >> systemd macht, > > Ich prügle kein totes Pferd. :) >>> Und mit dem UUID, >>> oder was das ist, ist es unmöglich in >>> meinem Programm meine Datei wieder zu >>> finden. > >> ? > > Ich schreibe > > fopen ("/tmp/mytest.log", "w"); > > Die Datei wird dann unter > /var/tmp/systemd-private-c197dfbbd58040fdbc06da99d4f74dfe-apache2.service-C7QbVC/tmp/mytest.log > erzeugt. Jein. Aus Sicht des erzeugenden Prozesses (wo Du fopen machst) ist der Pfad /tmp/. Von außerhalb liegt es woanders, richtig. Wenn Du von verschiedenen Prozessen auf diese Dateien zugreifen willst, dann nimmt man kein PrivateTmp. Das alles wusste ich bis gestern übrigens auch nicht, lässt sich aber wunderbar googeln / in der Doku nachlesen: | PrivateTmp= | | Takes a boolean argument. If true, sets up a new file system namespace | for the executed processes and mounts private /tmp and /var/tmp | directories inside it that is not shared by processes outside of the | namespace. This is useful to secure access to temporary files of the | process, but makes sharing between processes via /tmp or /var/tmp | impossible. If this is enabled, all temporary files created by a service | in these directories will be removed after the service is stopped. | Defaults to false. >>> systemd verbietet also /tmp zu verwenden. > >> Das ist falsch. > > Das ist nur Semantik. Naja, Aussagen über den Wahrheitsgehalt einer Behauptung sind immer "Semantik", oder nicht? Korrekt ist: systemd erlaubt es, einen Dienst so zu konfigurieren, dass von diesem Dienst in /tmp/ geschriebene Dateien außerhalb der Prozessgruppe dieses Dienstes nicht sichtbar sind. Das ist ein Feature. Und kein Bug, denn es ist abschaltbar. Insbesondere durch den lokalen Admin, auch wenn die Distribution es anders ausliefert. Das ist doch cool, man muss es nur lernen. Wir machen doch hier IT, da kann man sich nicht darauf verlassen, dass solches Detailwissen länger als 5-10 Jahre hält. > Verbieten und unmöglich oder extrem aufwendig machen kommt sich auf > das Gleiche heraus. Beides ist ja nicht der Fall. > Aber ohne die Konfiguration von > Apache zu ändern wüßte ich nicht, wie ich > trotzdem unter /tmp (das echte, meine ich), > eine Datei schreiben oder lesen könnte. Du brauchst nur "systemctl edit apache2.service" aufrufen und im Editor das hier pasten: [Service] PrivateTmp=false Dann noch systemctl daemon-reload systemctl restart apache2.service >> Die im PrivateTmp würde systemd für Dich >> löschen. > > Bin mir nicht sicher wann. Doku, siehe oben. J. -- I worry about people thinking I have lost direction. [Agree] [Disagree] <http://archive.slowlydownward.com/NODATA/data_enter2.html>
Attachment:
signature.asc
Description: PGP signature