Apache-2.2
如何在 Debian 上的 Apache 中設置預設 umask?
我需要 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