我正在尝试使由 Web 服务器 (Apache、lighttpd 等) 创建的文件可由 ftp 用户写入。添加apache
到nobody
组,反之亦然。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
会采取技巧。