对于使用 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
以防止它获得自己的挂载命名空间。当然,这会产生安全隐患,因此您可能希望检查代码对临时文件的使用。