如何在 Debian 上为 php5-fpm 设置 ummask


How to set umask for php5-fpm on Debian?

我正在运行php5-fpmnginx通过端口(不是套接字)连接。它是库存的Debian Jessie,所有软件包都通过apt-get安装。

我正在尝试将php5-fpm正在使用的 www-data 用户的默认掩码从 0022 更改为 0002 以允许组写入权限。我试过:

  • 编辑/etc/init.d/php5-fpm初始化脚本并将--umask 0002添加到start-stop-daemon调用中,但被忽略;
  • umask 0002添加到/var/www/.profile因为/var/wwwwww-data用户的主目录,但它没有帮助(我并不感到惊讶)。
  • 我没有使用upstart所以这个解决方案不适合我。

另外,无论我尝试过什么,命令sudo -u www-data bash -c umask总是返回0022

我能够通过编辑unit.service文件来为php5-fpm服务设置掩码,如此处和此处的建议。Debian 8 的完整和有效的解决方案是这样的:

  1. 手动编辑/etc/systemd/system/multi-user.target.wants/php5-fpm.service文件并在[Service]部分内添加UMask=0002行。
  2. 运行命令systemctl daemon-reload
  3. 运行命令systemctl restart php5-fpm.service

现在服务文件如下所示:

[Unit]
Description = The PHP FastCGI Process Manager
After = network.target
[Service]
Type = notify
PIDFile = /var/run/php5-fpm.pid
ExecStartPre = /usr/lib/php5/php5-fpm-checkconf
ExecStart = /usr/sbin/php5-fpm --nodaemonize --fpm-config /etc/php5/fpm/php-fpm.conf
ExecReload = /bin/kill -USR2 $MAINPID
; Added to set umask for files created by PHP
UMask = 0002
[Install]
WantedBy = multi-user.target

请注意:

  1. 您不能使用systemctl edit php5-fpm.service命令,因为systemctl版本 218 中引入了edit选项,但 Debian 8 随版本 215 一起提供。
  2. 按照此答案的评论中的建议添加*.conf文件对我不起作用,但也许我搞砸了一些东西(欢迎对此发表评论,因为编辑单元文件不是我觉得舒服的事情)。