Apache-2.4

在 Apache/PHP-FPM 中禁用掛載命名空間

  • July 10, 2020

對於管理 NFS 掛載點的 Web GUI,我們在遷移到 Centos 8 後遇到了問題

JS 比林斯指出:

CentOS8 在私有命名空間中執行 httpd(有自己私有的 /tmp)。由於讓 httpd 能夠執行 sudo 是一個非常糟糕的主意,因此我從未嘗試過,但我懷疑您所看到的事實是掛載發生在私有命名空間中

效果是mount(8)通過呼叫掛載 NFS 分區system()的程序或什至程序執行,分區僅對後續 HTTP 呼叫可見,而不對伺服器本身上執行的任何程序可見。setuid``mount(2)

有沒有辦法配置apache和/或php-fpm不使用掛載命名空間?

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

編輯我

根據邁克爾漢普頓的建議,更改/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

PrivateTmp=您可以在 your中關閉php-fpm.service以防止它獲得自己的掛載命名空間。當然,這具有安全隱患,因此您可能希望查看程式碼對臨時文件的使用。

引用自:https://serverfault.com/questions/1024364