为 apache、lighttpd 等设置 umask 002 不起作用?

为 apache、lighttpd 等设置 umask 002 不起作用?

我正在尝试使由 Web 服务器 (Apache、lighttpd 等) 创建的文件可由 ftp 用户写入。添加apachenobody组,反之亦然。umask 002对于 ftp 来说,这很正常。但 Web 服务器似乎忽略了我的 umask 设置/etc/sysconfig/

grep umask /etc/sysconfig/httpd 
umask 002

或者/etc/init.d/

start() {
    echo -n $"Starting $prog: "
    umask 002
    daemon $lighttpd -f $LIGHTTPD_CONF_PATH
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
    return $RETVAL
}

该文件仍以 755 权限创建:

-rwxr-xr-x 1 apache nobody 28243 Jul 28 09:49 ssvzone_997.js
-rwxr-xr-x 1 apache nobody 26224 Jul 28 09:49 ssvzone_998.js
-rwxr-xr-x 1 apache nobody 19686 Jul 28 09:49 ssvzone_999.js

-rwxr-xr-x 1 lighttpd nobody 23949 Jul 29 15:50 ssvzone_999_1.js
-rwxr-xr-x 1 lighttpd nobody 20668 Jul 29 15:50 ssvzone_999_2.js
-rwxr-xr-x 1 lighttpd nobody 22294 Jul 29 15:50 ssvzone_999_3.js

那么,根本原因是什么?

附言:我看到了一些类似的问题,但没有一个能提供帮助。

答案1

Umask 不设置位。可能是创建文件的应用程序不要求w设置组位,或者它明确将文件本身 chmod 为“安全”。

一个简单的 php 脚本报告了 umask 什么?

<?php 
    system ("umask");
?>

在 CentOS 系统上,我必须手动报告默认值 0022 或我在/etc/sysconfig/httpd

答案2

不知道为什么file_put_contents()函数会创建具有 755 权限的文件,但是@chmod 664会采取技巧。

相关内容