Apache-2.2

如何在 Debian 上的 Apache 中設置預設 umask?

  • December 18, 2019

我需要 apache2 創建的文件002預設具有 umask ,即組 rw 。

我試過放入umask 002/etc/apache2/envvars ,雖然這個腳本確實作為 apache 啟動 ( apache2ctl graceful) 的一部分執行,但 umask 沒有效果。大概在啟動過程中的某個地方(例如,當使用者從降級root到 時www-data)有更好的地方放置它。

我讀過關於 Fedora 的文章,還有一篇建議將 umask 放入其中,/etc/init.d/apache2但這些都不適用於 Debian(Squeeze)。

你能幫我嗎?

為確保 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";
}
?>

請注意使用者 www-data 對您安裝此簡單測試文件的文件夾具有寫入權限。

要執行新的 umask,請檢查文件 /etc/apache2/envvars 是否將在您的 Apache 啟動文件 /etc/init.d/apache2 中使用:

...
PIDFILE=$(. /etc/apache2/envvars && echo $APACHE_PID_FILE)
...

在 /etc/apache2/envvars 中設置你的 umask:

...
# umask 002 to create files with 0664 and folders with 0775
umask 002

重啟你的 Apache:

service apache2 restart

檢查差異:

#> 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

引用自:https://serverfault.com/questions/383734