Вы ошибаетесь, как работают разрешения chmod и unix-файла.
Вам необходимо настроить каталог /opt /lampp /htdocs, чтобы пользователь, вошедший в систему как пользователь, имел права на запись. Вы также должны убедиться, что то, что вы там пишете, может быть прочитано любым веб-сервером, который использует LAMPP (к сожалению, я не знаком с LAMP).
Сначала вам нужно посмотреть, кому принадлежит /opt /lampp /htdocs:
$ ls -ld /opt/lampp/htdocs
Должен вернуть что-то вроде:
drwxr-xr-x 4 lampp www 4096 2011-03-22 12:43 /opt/lampp/htdocs
Первый бит (dwrxr-xr-x) - это права доступа к файлу. "lampp" является владельцем каталога, а "www" является владельцем группы каталога. Вы должны отметить это.
Прежде всего, давайте отсортируем группу. Если в группе есть что-то кроме "root", то все хорошо, и вы можете пропустить этот раздел:
Если это "корень", его нужно изменить на что-то более разумное. Давайте создадим новую группу, к которой он будет принадлежать:
$ sudo groupadd www
Затем измените группу в каталоге:
$ sudo chgrp -R www /opt/lampp/htdocs
Теперь вам нужно настроить веб-сервер в качестве группы www. Если веб-сервером является Apache, вам следует проверить файл /etc/apache/httpd.conf и соответствующим образом отредактировать настройку "Group". Я не знаю настройки для других веб-серверов.
Теперь это то место, куда вы могли бы перейти, если вам не нужно было переключать группу с root на что-то другое.
Теперь нам нужно обратиться к разрешениям на каталог. Мы хотим использовать некоторые особые права, называемые битом setgid.
$ 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
Вы видите, что разрешения теперь несколько изменились. Давайте объясним это.
- Первая буква - это тип файла. В этом случае "д" для каталога.
- Следующие три, "rwx" - это разрешения, которые владелец (lampp) имеет в директории. r = чтение, w = запись и x = просмотр содержимого каталога.
- Следующие три, "rws" предназначены для владельца группы (www), но вы заметили, что x в данном случае на самом деле является s - мы подойдем к этому через минуту.
- Последние три, "RX", для всех остальных. То есть прочитайте и посмотрите содержимое каталога. Нет записи.
"S" в группе разрешений называется битом "setgid". Это специальное разрешение, которое заставляет любые файлы, созданные в каталоге, наследовать владельца группы от самого каталога. Таким образом, если пользователь "fred" в группе "users" создаст файл, он будет принадлежать "fred" в группе "www". Это очень полезно для общей области, где несколько человек все читают и пишут одни и те же файлы.
Но в настоящее время у вас все еще нет возможности писать в эту область. Зачем? Потому что вы не в группе "www". Давайте исправим это сейчас:
$ sudo usermod -aG www blub
Замените "www" владельцем группы в каталоге /opt /lampp /htdocs, который вы указали в начале.
Чтобы изменения вступили в силу, вам необходимо выйти из системы и снова войти в нее - членство в вашей группе читается во время входа в систему.
Как только вы это сделаете, вы вдруг обнаружите, что теперь можете волшебным образом записывать файлы в /opt /lampp /htdocs.
Если у вас в системе есть другие пользователи, которым вы хотите разрешить запись, просто добавьте их в группу www с помощью команды usermod -aD www <username>
.