Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I need files created by apache2 to have umask 002, i.e. group rw, by default.

I've tried putting umask 002 in /etc/apache2/envvars and although this script does get executed as part of apache start up (apache2ctl graceful) the umask has no effect. Presumably somewhere further in the start up process (e.g. when the user is downgraded from root to www-data) there's somewhere better to put this.

I've read posts about fedora and one suggesting putting umask in /etc/init.d/apache2 but neither of these apply/work in debian (Squeeze).

Can you help?

share|improve this question
You should try to restart Apache with "/etc/init.d/apache2 restart" or "service apache2 restart" – Jens Bradler Apr 28 '12 at 17:55
yep, neither worked. – artfulrobot Apr 28 '12 at 22:27
How do you create new files (WebDAV, PHP)? – Jens Bradler Apr 29 '12 at 5:27
In my test, I'm using file_put_contents(). but the code I'm trying to 'fix' with this is Drupal's Less module (which creates cached versions of processed Less CSS files). My specific problem is that I cannot run drush cc all as my user because it errors out on all these www-data created cache files. – artfulrobot Apr 30 '12 at 9:15
up vote 9 down vote accepted

To be sure that the umask setting takes effect please use a simple test and do not use any other web application for this. It might be the case that these application change the rights independently from the umask setting of Apache.

Simple test PHP script:

if ($fp = fopen(time() . '.txt', 'w')) {
  fwrite($fp, 'This is a simple test.');
  echo "done";
} else {
  echo "error - cannot create file";

Take care that the user www-data has write access to the folder where you have installed this simple test file.

To have the new umask running, check if the file /etc/apache2/envvars will be used within your Apache start file /etc/init.d/apache2 :

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

Set your umask in /etc/apache2/envvars :

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

Restart your Apache :

/etc/init.d/apache2 stop
/etc/init.d/apache2 start

Check the difference :

#> 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
share|improve this answer
Thank you! Even if it made me feel like an idiot to read it (I had the wrong octal for group rw) *blush* – artfulrobot May 1 '12 at 15:26

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.