I am using php-fpm
with PrivateTmp enabled. I have to read a file from PHP, which is copied by a remote deployment agent to the /tmp
directory. Since PrivateTmp is enabled, I am unable to directly access /tmp
directory.
Is it possible to read a file from the system /tmp
folder when PrivateTmp is enabled? I tried creating a symbolic link to /tmp
at /var/temp
and accessing the file through /var/temp
, but it did not work. /var/tmp
is currently bind mounted from /tmp
, and I also tried accessing the file through /var/tmp
without any success.
Read the manual please:
So no you can't read from the systemwide
/tmp/
directory.But there is a work-around in that same section of the manual:
So if your remote deployment agent is also running from a systemd unit you can join them together in a single PrivateTmp shared between them that is still separate from the rest of the system.
If you can't do that: don't store the file in the system
/tmp/
and simply have it placed/moved another location...You can use
nsenter
to run a command inside the network namespace.So for example, if you wanted to see the files inside /tmp for the apache2 service you could do something like this:
This will run
ls /tmp
inside the mount namespace that the apache2 process is running in.Also, the private tmp directory currently is located at a path like
/tmp/systemd-private-*-apache2.service-*
where the*
are some kind of id. Although you probably shouldn't rely on a specific format or location for that.