我使用启用PrivateTmp的php-fpm 。 我必须从PHP中读取一个由远程部署代理复制到/tmp目录的文件。 由于PrivateTmp已启用,因此无法直接访问/tmp目录。
当启用PrivateTmp时,是否可以从system /tmp文件夹读取文件? 我尝试在/var/temp创build一个到/tmp的符号链接,并通过/var/temp访问这个文件,但是没有成功。 /var/tmp目前是从/tmp挂载的,而且我也尝试通过/var/tmp访问文件,没有任何成功。
请阅读说明书 :
PrivateTmp=
采取布尔参数。 如果为true,则为已执行的进程设置一个新的文件系统名称空间,并在其中挂载不在名称空间之外的进程共享的private/tmp和/var/tmp目录。 这对于保护对进程的临时文件的访问是有用的,但是不能通过/tmp或/var/tmp在进程之间共享。
因此,不能从systemwide /tmp/目录中读取。
但是在手册的同一部分有一个解决方法:
…通过使用
JoinsNamespaceOf=指令,可以在同一个private / tmp和/ var / tmp名称空间内运行两个或多个单元,有关详细信息,请参阅systemd.unit(5) 。
因此,如果您的远程部署代理也是从systemd单元运行的,则可以将它们一起join到共享的单个PrivateTmp中,这些SharedTmp仍然与系统的其余部分分离。
如果你不能这样做:不要将文件存储在system /tmp/ ,只需将其放置/移动到另一个位置即可