在 Apache/PHP-FPM 中禁用挂载命名空间

在 Apache/PHP-FPM 中禁用挂载命名空间

对于使用 Web GUI 来管理 NFS 挂载点,我们遇到了迁移到 Centos 8 后出现的问题

JS 比林斯指出:

CentOS8 在私有命名空间中运行 httpd(具有自己的私有 /tmp)。由于让 httpd 能够运行 sudo 是一个很糟糕的想法,我从未尝试过,但我怀疑您看到的是挂载发生在私有命名空间中

其效果是,mount(8)通过运行system()或甚至setuid调用挂载 NFS 分区的程序mount(2),这些分区仅对后续的 HTTP 调用可见,而对服务器本身上运行的任何进程不可见。

有没有办法配置apache和/或php-fpm不使用挂载命名空间?

  • Centos 8 内核 4.18.0-147.el8.x86_64
  • SELinux 已禁用
  • Apache/2.4.37 (centos)
  • PHP 7.2.11

編輯

根据 Michael Hampton 的建议,改为/etc/systemd/system/php-fpm.service禁用即可PrivateTmp解决问题:

[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target

[Service]
Type=notify
ExecStart=/usr/sbin/php-fpm --nodaemonize
ExecReload=/bin/kill -USR2 $MAINPID

# Disable private mount namespace
PrivateTmp=false
RuntimeDirectory=php-fpm
RuntimeDirectoryMode=0755

[Install]
WantedBy=multi-user.target

答案1

您可以关闭PrivateTmp=php-fpm.service以防止它获得自己的挂载命名空间。当然,这会产生安全隐患,因此您可能希望检查代码对临时文件的使用。

相关内容