如何在Debian上设置php5-fpm的umask?

我正在运行php5-fpmnginx通过端口(而不是socket)连接。 它的股票Debian Jessie与通过apt-get安装的所有软件包。

我试图改变默认的umask为www数据用户php5-fpm使用从00220002允许组写入权限。 我试过了:

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

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

我可以通过编辑它的unit.service文件来设置php5-fpm服务的umask,如这里和这里所建议的。 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文件的建议在这个答案的评论中没有为我工作,但也许我搞砸了一些东西(评论是受欢迎的,因为编辑单元文件是不是我觉得舒服的东西)。