Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

How do I set the permission, so I can? The "Create new folder" option is greyed out. I tried this: sudo chmod -rw /opt/lampp/htdocs

But it still doesn't work. When I add sudo chmod -rw 755 /opt/lampp/htdocs, it says: "755" no such file or directory

share|improve this question
    
have you tried "chmod -R 777 /opt/lampp/htdocs" –  HTDutchy Apr 10 '11 at 10:16

2 Answers 2

up vote 10 down vote accepted

You are mistaking how chmod and the unix file permissions operate.

You need to configure the /opt/lampp/htdocs directory so that the user you are logged in as has permission to write. You also need to ensure that what you write in there can be read by whatever web server LAMPP uses (I'm not familiar with LAMP unfortunately.)

First you need to look at who is owning /opt/lampp/htdocs:

$ ls -ld /opt/lampp/htdocs

Should return something like:

drwxr-xr-x 4 lampp www 4096 2011-03-22 12:43 /opt/lampp/htdocs

The first bit (dwrxr-xr-x) is the file permissions. "lampp" is the owner of the directory, and "www" is the group-owner of the directory. You need to note this one.

First off let's sort the group. If the group is anything except "root" then all is well and good and you can skip this section:

If it's "root" it will need changing to something more sensible. Let's make a new group for it to belong to:

$ sudo groupadd www

Then change the group on the directory:

$ sudo chgrp -R www /opt/lampp/htdocs

Now you need to make the web server run as the group www. If the web server is Apache then you should check the /etc/apache/httpd.conf file and edit the "Group" setting accordingly. I don't know the setting for other web servers.

Now this is where you'd skip to if you didn't need to switch the group from root to something else.

We now need to address the permissions on the directory. We want to be using some very special permissions, called the "setgid" bit.

$ sudo chmod 2775 /opt/lampp/htdocs
$ ls -ld /opt/lampp/htdocs
drwxrwsr-x 4 lampp www 4096 2011-03-22 12:43 /opt/lampp/htdocs

You see the permissions have now changed somewhat. Let's explain these.

  • The first letter is the file type. In this case "d" is for Directory.
  • The next three, "rwx" are the permissions the owner (lampp) has on the directort. r = read, w=write and x=see the directory contents.
  • The next three, "rws" are for the group-owner (www), but you notice the x in this case is actually an s - we will come to that in a moment.
  • The last three, "r-x", are for everybody else. That is read, and see the content of the directory. No writing.

The "s" in the group permissions is called the "setgid" bit. This is a special permission which causes any files created in the directory to inherit the group-owner from the directory itself. So if user "fred" in group "users" makes a file in there it would be owned by "fred" in group "www". This is very useful for a shared area where multiple people all read and write the same files.

But as it stands you still don't have the ability to write to that area. Why? Because you're not in the "www" group. Let's rectify that now:

$ sudo usermod -aG www blub

Replace "www" with the group-owner of the /opt/lampp/htdocs directory you noted near the beginning.

You will need to log out and in again for this change to take effect - your group memberships are read at login time.

Once you have done that you should suddenly find you can now magically write files in /opt/lampp/htdocs.

If you have other users on the system that you want to allow to write to there, just add them to the www group with the usermod -aD www <username> command.

share|improve this answer
    
Thank you :D. That worked perfectly. (it's strange though that it says "nobody" as the owner?) drwxrwsr-x 4 nobody www 4096 2009-08-27 10:36 /opt/lampp/htdocs –  Blub Apr 10 '11 at 10:56
    
"nobody" is just another user, albeit a reserved one. nobody is supposed to have minimal permissions for everything. You'll probably find that "nobody" has a UID of 65535 or something similar. –  Majenko Apr 10 '11 at 11:00
    
Excellent answer and walk-through, saved my day- THANKS! –  andig Oct 12 '11 at 18:58

you use EITHER +rw OR the octals, not both.

What you're trying to do is remove read and write privileges from a directory called 755 as well as /opt/lampp/htdocs.

In any case, you shouldn't be using xampp - you can get a more up to date, native install of a lamp stack - you can install it with tasksel.

share|improve this answer
    
I thought I'd use xampp because I know it from Windows and other people from Google searches suggested that it's more user friendly –  Blub Apr 10 '11 at 10:50
    
actually, no. install a lamp stack using tasksel and phpmyadmin and you have most of xampp's functionality, sans the email server on the windows version. It also has a few security tweaks. other than needing two commands to install, its just so much easier - i download and extract stuff straight to /var/www, chown the files to www-data, and i'm good to go. –  Journeyman Geek Apr 10 '11 at 11:11
    
"chown the files to www-data"? What does that mean? –  Blub Apr 10 '11 at 12:15
    
chown - change ownership to a specific user - in this case www-data, which is more secure than changing the priviledges to read/write etc. –  Journeyman Geek Apr 10 '11 at 13:25

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.