[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: debian apache Verwirrung



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


Reply to: