【问题标题】:How to set umask for php5-fpm on Debian?如何在 Debian 上为 php5-fpm 设置 umask?
【发布时间】:2016-06-21 10:25:58
【问题描述】:

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

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

  • 编辑/etc/init.d/php5-fpm init 脚本并将--umask 0002 添加到start-stop-daemon 调用中,但被忽略了;
  • 将umask 0002 添加到/var/www/.profile 作为/var/www 是www-data 用户的主目录,但它没有帮助(我并不感到惊讶)。
  • 我没有使用upstart,所以this solution 不适合我。

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

【问题讨论】:

    标签: php nginx debian


    【解决方案1】:

    我能够按照建议的here 和here 编辑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 命令,因为 edit 选项是在 systemctl 版本 218 中引入的,但 Debian 8 附带版本 215。
    2. 在 cmets 中为此 answer 添加 *.conf 文件对我不起作用,但也许我搞砸了(欢迎 cmets 这样做,因为编辑单元文件不是我觉得舒服的事情)。

    【讨论】:

    • 非常感谢!像魅力一样工作!
    • 添加 .conf 文件由于错误而无法工作。而不是php-fpm.service,你必须写php5-fpm.service。我认为最好添加一个.conf 这样的文件serverfault.com/questions/582371/…
    猜你喜欢
    • 2014-02-10
    • 2012-07-20
    • 1970-01-01
    • 2016-01-08
    • 2015-09-14
    • 2017-11-30
    • 2014-10-17
    • 1970-01-01
    • 2015-02-02
    相关资源
    最近更新 更多