Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

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
    
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. –  mazzzzz 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. –  mazzzzz Aug 18 '11 at 4:39
add comment

migrated from stackoverflow.com Aug 18 '11 at 6:00

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

5 Answers

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

Or:

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 –  change Aug 18 '11 at 4:39
add comment
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" : http://www.perlfect.com/articles/chmod.shtml

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

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

$ chmod 664 myfile/folder

share|improve this answer
add comment

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
add comment

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. us3.php.net/manual/en/function.ftp-fput.php

share|improve this answer
add comment

Your Answer

 
discard

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.