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