Для веб-интерфейса для управления точками монтирования NFS мы столкнулись с проблема после перехода на Centos 8.
JS Billings отметил, что:
CentOS8 запускает httpd в частном пространстве имен (с собственным частным / tmp). Поскольку дать httpd возможность запускать sudo - ужасная идея, я никогда не пробовал этого, но подозреваю, что вы видите то, что монтирование происходит в частном пространстве имен.
Эффект в том, что бег mount(8)
через system()
или даже setuid
программа, которая вызывает mount(2)
для монтирования разделов NFS эти разделы видны только для последующих HTTP-вызовов, а не для любых процессов, запущенных на самом сервере.
Есть ли способ настроить apache
и / или php-fpm
не использовать пространства имен монтирования?
ИЗМЕНИТЬ I
По совету Майкла Хэмптона, меняя /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=
в твоем php-fpm.service
чтобы предотвратить получение собственного пространства имен монтирования. Это, конечно, имеет последствия для безопасности, поэтому вы можете проверить использование в коде временных файлов.