出于某种原因,当我尝试保存文件(由 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。