Каждый раз, когда я создаю новый файл в «eclipse», мне нужно запустить эти две строки кода, чтобы получить разрешение на чтение и запись:
chmod -R 775 /var/www/folder/filename.extension
И/или
sudo chown -R www-data:www-data /var/www
И, если я скопирую некоторые файлы в эту папку сервера и открою ее из URL-адреса браузера, например:
localhost/folder/filename.extension
Я получаю сообщение об ошибке разрешения от сервера Apache.
Неужели нет способа избавиться от этой проблемы?
*Примечание:Основная ошибка возникает, когда моя move_uploaded_file()
функция пытается переместить файл в /var/www/MyProject/
каталог.
решение1
Используйте бит SGID.
Сделайте это один раз и забудьте об этой проблеме:
chmod g+s /var/www/folder
Возможно, вы захотите сделать то же самое для всех подпапок:
find /var/www/folder -type d | xargs chmod g+s
и на всякий случай:
find /var/www/folder -type d | xargs chgrp www-data
Теперь все файлы, которые создаются в группе, /var/www/folder/
будут принадлежать к той группе, которая владеет содержащей ее папкой, неважно какой. Это позволит вам создавать любые файлы или папки, не беспокоясь о том, что они не будут принадлежать, например,www-данныегруппа, а это то, что вам нужно.
Обратите внимание, что это будет работать только для файлов или папок, которые созданы в каталоге. Если файлы создаются в другом месте и перемещаются в дерево каталогов, вам все равно придется вручную менять владельца.
Пример:
# Create folder that belongs to www-data group
$ mkdir test
$ chown john.www-data test
$ ls -l
drwxr-xr-x 2 john www-data 4096 Jun 17 10:14 test
# Create a file, check the ownership
$ touch test/file1
$ ls -l test/
-rw-r--r-- 1 john users 0 Jun 17 10:16 file1
# Set the SGID bit
$ chmod g+s test
$ ls -l
drwxr-sr-x 2 john www-data 4096 Jun 17 10:19 test
# Create a file, check the ownership
$ touch test/file2
$ ls -l test/
-rw-r--r-- 1 john users 0 Jun 17 10:18 file1
-rw-r--r-- 1 john www-data 0 Jun 17 10:19 file2
Больше информацииздесь.
решение2
Вы можете использовать списки ACL по умолчанию для назначения разрешений пользователям и группам для новых файлов и каталогов:
setfacl -dR u:domain:rwx,g:www-data:rwx /var/www/folder/filename.extension
решение3
Во-первых, я хотел бы отметить, что следует быть более конкретным, задавая вопросы; например, какую ОС, дистрибутив Linux вы используете, так как это может значительно ускорить процесс поиска решения. Сказав это, вы можете начать устранение неполадок, изменив конкретную папкувладениеиОАК(Управление доступом пользователей) рекурсивно, например так:
chown domain:www-data /var/www/folder -chR
chmod 775 /var/www/folder -cR
ПРИМЕЧАНИЕ: Исключая завершающую косую черту(/)в конце имени папки, ваши изменения будут применены к папке и всему ее содержимому.
Что касается ошибок разрешений при доступе к файлу (скрипту?) в браузере, вам нужно убедиться, что у вашего пользователя есть правильные разрешения на обслуживание файлов в apache
. Это можно исправить, отредактировав /etc/httpd/*/httpd.conf
файл и добавив:
User domain
Group www-data