Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

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 am trying to create files in my /var/www folder (debian), but the folder is read only. The only way I can create a file is to go into root and create it in the terminal. Then I have to edit the contents there too. How can I create files and folders inside the www directory, or make it not readonly but still be secure some how. I don't understand how this works... thanks

share|improve this question

migrated from Aug 18 '11 at 6:00

This question came from our site for professional and enthusiast programmers.

Better question, what are you wanting to use to upload files? via ftp? Could you type ls -l /var/ | grep www and give me the response aswell. – Ben Aug 18 '11 at 4:36
This has nothing to do with ftp; /var/www is on his local machine. – cdhowie Aug 18 '11 at 4:37
He never said he was working on a local machine, I assumed he was ssh'g into a remote machine and creating files. Then he would obviously want sftp/ftp access. My bad. – Ben Aug 18 '11 at 4:39
up vote 4 down vote accepted

You could change ownership of /var/www to your user or group, or create a subdirectory in /var/www and give yourself ownership. If your user name is "david" then:

david$ su -
root# chown david /var/www


david$ su -
root# mkdir /var/www/david
root# chown david /var/www/david

Then your user will be able to read and write inside of whichever directory you give yourself ownership of.

share|improve this answer
got it thanks +1 – David Aug 18 '11 at 4:39
sudo chown `whoami` /var/www

That will set the owner of /var/www to the current user, which is what whoami returns.

You should really read up on permissions and ownership of files/directories in posix systems if you're going to be maintaining an apache instance.

This may not be the best link, but it was first on google for "understanding unix permissions" :

share|improve this answer
Note that sudo is not installed on Debian by default. – cdhowie Aug 18 '11 at 4:38

You can do this by changing the permissions of the folder.

$ chmod 664 myfile/folder

share|improve this answer

In order to do what you want and at the same time don't mess with the web server perms you must add yourself and the web server' user or group to the files and directories ownerships.

You can do it like follows:

1: # chmod -R 775 /var/www/;
2: # chown -R your-user.webserver-group /var/www/

The first line gives the user and group read, write and execution perms in the web server directory.

The second line warranties that you are the user stated in the line 1, and the web server group is in the group in the web server directory.

In that way you will be able to create, modify or delete files and folders in the /var/www/ directory and at the same time the web server can do its normal tasks.

share|improve this answer

You could save to /tmp, then use the ftp functions like PHP's ftp_fput() to push the temp file to its proper location. It seems crazy to have the server ftp "back to itself" but the files will then be owned by the ftp user and not the apache user. Be sure to delete the tmp file and secure the file that has the ftp password.

share|improve this answer

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.