我在php-fpm
启用 PrivateTmp 的情况下使用。我必须从 PHP 中读取一个文件,该文件由远程部署代理复制到/tmp
目录中。由于启用了 PrivateTmp,我无法直接访问/tmp
目录。
/tmp
启用 PrivateTmp 后是否可以从系统文件夹中读取文件?我尝试创建指向/tmp
at的符号链接/var/temp
并通过 访问文件/var/temp
,但它不起作用。/var/tmp
当前是从 绑定安装的/tmp
,我也尝试通过访问该文件/var/tmp
但没有任何成功。
请阅读手册 :
所以不,你不能从系统范围的
/tmp/
目录中读取。但是在手册的同一部分有一个解决方法:
因此,如果您的远程部署代理也从 systemd 单元运行,您可以将它们连接到一个单独的 PrivateTmp 中,它们之间共享仍然与系统的其余部分分开。
如果你不能这样做:不要将文件存储在系统中
/tmp/
,只需将其放置/移动到另一个位置......您可以使用
nsenter
在网络命名空间内运行命令。例如,如果您想查看 /tmp 中用于 apache2 服务的文件,您可以执行以下操作:
这将在运行
ls /tmp
apache2 进程的挂载命名空间内运行。此外,私有 tmp 目录当前位于某种 id
/tmp/systemd-private-*-apache2.service-*
所在的路径中。*
尽管您可能不应该为此依赖特定的格式或位置。