apache2:将文件保存在 /tmp 中的“system-private-[hash]”中,而不仅仅是保存代码中定义的文件夹

apache2:将文件保存在 /tmp 中的“system-private-[hash]”中,而不仅仅是保存代码中定义的文件夹

出于某种原因,当我尝试保存文件(由 PHP 在 下生成/www/appname/module)时,它被保存在

/tmp/systemd-private-015eb2e9f67b4eef862c68e99fe0ba30-apache2.service-9h6i08

并瞄准要保存的文件

/tmp/somename

文件保存在

/tmp/systemd-private-015eb2e9f67b4eef862c68e99fe0ba30-apache2.service-9h6i08/tmp/somename

我如何禁用此功能并仅“定期”将文件保存到 /tmp 目录?

这个默认功能的用途到底是什么?

答案1

这是一个 systemd 安全设置,它创建特定于服务的私有临时目录。

你的 apache systemd 单元将文件有一个设置:

...
[Service]
ExecStart=...
PrivateTmp=yes
...

此选项将确保/tmp服务将看到的目录是私有的,并与主机系统的目录隔离/tmp/tmp传统上,它是所有本地服务和用户的共享空间。多年来,它一直是众多服务的主要安全问题来源。由于可猜测的/tmp临时文件而导致的符号链接攻击和 DoS 漏洞很常见。通过将服务/tmp与主机的其余部分隔离,此类漏洞变得毫无意义。
来源:http://0pointer.de/blog/projects/security.html

您可以配置多个服务来共享一个PrivateTmp可能JoinsNamespaceOf=需要设置PrivateTmp=no

答案2

我的 PrivateTmp 显示 true,而不是 yes。已将其更改为 false。不确定它是否接受其他值,例如“no”、“false”等。

注意,更改服务单元后,我需要执行 systemctl daemon-reload,然后执行 systemctl restart apache2。

相关内容