【问题标题】:How to set umask for www-data user?如何为 www-data 用户设置 umask?
【发布时间】:2016-09-02 10:42:55
【问题描述】:

我目前正在使用 PHP 7.0.6 fpm 运行 Apache/2.4.10 (Debian Jessie)

现在我需要将 umask 0002 添加到 php-fpm.conf 中,以便 www-data 用户将创建具有 rw-rw-r 权限的文件。

【问题讨论】:

    标签: php umask


    【解决方案1】:

    我希望这会奏效,请尝试这种方式

    手动编辑/etc/systemd/system/multi-user.target.wants/ php7.0-fpm.service 文件并在[Service] 部分添加UMask=0002 行。

    以前是这样的。

    然后

    运行命令systemctl daemon-reload

    然后

    运行命令systemctl restart php7.0-fpm.service

    现在服务文件如下所示:

    [Unit]
    Description = The PHP FastCGI Process Manager
    After = network.target
    
    [Service]
    Type = notify
    PIDFile = /var/run/php/php7.0-fpm.pid 
    ExecStartPre = /usr/lib/php/php7.0-fpm-checkconf
    ExecStart = /usr/sbin/php-fpm7.0 --nodaemonize --fpm-config /etc/php/7.0/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
    

    注意:您不能使用 systemctl edit php7.0-fpm.service 命令,因为 systemctl 版本 218 中引入了编辑选项,但 Debian 8 附带版本 215。

    【讨论】:

    • 感谢您的回答,但我只需要通过配置文件即可。我无法编辑服务。
    • FWIW 这似乎对我使用 Debian 8.9 没有帮助 - 特别是我在完成所有步骤后运行 sudo -u www-data touch foo 并且仍在使用旧的 umask。欢迎提出建议...
    【解决方案2】:

    关于威廉·特瑞尔的评论:

    sudo -u www-data touch foo 将访问文件 foo,就好像网络服务器在没有 PHP 的情况下完成了它一样。因此,将使用网络服务器进程 umask,而不是 PHP-FPM 中的设置。要更改网络服务器进程 umask,您需要编辑 /etc/apache2 中的 envvars 文件(对于基于 Debian 的系统)。

    【讨论】:

      猜你喜欢
      • 2015-08-25
      • 2011-04-22
      • 2010-09-30
      • 1970-01-01
      • 2018-12-24
      • 2019-06-18
      • 2017-07-31
      • 2016-06-21
      • 2015-03-23
      相关资源
      最近更新 更多