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.
1have you tried "chmod -R 777 /opt/lampp/htdocs" – HTDutchy – 2011-04-10T10:16:04.080