如何在 Debian 上的 Apache 中设置默认 umask?

art*_*bot 14 umask apache-2.2

002默认情况下,我需要 apache2 创建的文件具有 umask ,即组 rw。

我试过放入umask 002/etc/apache2/envvars ,虽然这个脚本确实作为 apache 启动的一部分执行(apache2ctl graceful),但 umask 没有效果。大概在启动过程中的某个地方(例如,当用户从 降级root到 时www-data)有更好的地方放置它。

我读过有关 Fedora 的帖子和一个建议将 umask 放入的帖子,/etc/init.d/apache2但这些都不适用于 Debian (Squeeze)。

你能帮我吗?

Jen*_*ler 13

为确保 umask 设置生效,请使用简单的测试,不要为此使用任何其他 Web 应用程序。这些应用程序可能会独立于 Apache 的 umask 设置更改权限。

简单的测试 PHP 脚本:

<?php
if ($fp = fopen(time() . '.txt', 'w')) {
  fwrite($fp, 'This is a simple test.');
  fclose($fp);
  echo "done";
} else {
  echo "error - cannot create file";
}
?>
Run Code Online (Sandbox Code Playgroud)

请注意用户 www-data 对安装此简单测试文件的文件夹具有写入权限。

要运行新的 umask,请检查文件 /etc/apache2/envvars 是否将在您的 Apache 启动文件 /etc/init.d/apache2 中使用:

...
PIDFILE=$(. /etc/apache2/envvars && echo $APACHE_PID_FILE)
...
Run Code Online (Sandbox Code Playgroud)

在 /etc/apache2/envvars 中设置您的 umask :

...
# umask 002 to create files with 0664 and folders with 0775
umask 002
Run Code Online (Sandbox Code Playgroud)

重启你的 Apache :

service apache2 restart
Run Code Online (Sandbox Code Playgroud)

检查差异:

#> ls -l *.txt
-rw-rw-r-- 1 www-data www-data  14 2012-05-01 15:56 1335880583.txt
-rw-r--r-- 1 www-data www-data  14 2012-05-01 15:55 1335880540.txt
Run Code Online (Sandbox Code Playgroud)