Каждый раз, когда я создаю новый файл из «eclipse», мне нужно запустить эти две строки кода, чтобы получить r / w-разрешение:
chmod -R 775 /var/www/folder/filename.extension
И / или
sudo chown -R www-data:www-data /var/www
И, если я скопирую некоторые файлы по этой папке сервера и получаю доступ к ней из URL-адреса браузера, например:
localhost/folder/filename.extension
Я получаю ошибку разрешения от Apache Server.
Разве нет способа, чтобы я мог избавиться от этой проблемы?
* Примечание . Основная ошибка возникает, когда моя move_uploaded_file()
пытается переместить файл в каталог /var/www/MyProject/
.
Используйте бит 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-data , что вам нужно.
Обратите внимание, что это будет работать только для файлов или папок, созданных в каталоге. Если файлы создаются в другом месте и перемещаются в дерево каталогов, вам все равно необходимо вручную изменить владельца.
Пример:
# 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
Больше информации здесь .
Вы можете использовать ACL по умолчанию для назначения прав доступа пользователей и групп к новым файлам и каталогам:
setfacl -dR u:domain:rwx,g:www-data:rwx /var/www/folder/filename.extension
Во-первых, я хотел бы указать, что это должно быть более конкретным, когда вы задаете вопросы; например, какую ОС, дистрибутив Linux вы используете, так как это ускорит процесс поиска решения. Сказав это, вы можете начать поиск и устранение неисправностей путем рекурсивного изменения права собственности на определенную папку и UAC (User Access Control), например:
chown domain:www-data /var/www/folder -chR chmod 775 /var/www/folder -cR
ПРИМЕЧАНИЕ . Исключая конечную косую черту (/) в конце имени папки, ваши изменения будут применяться к папке и всему ее содержимому.
Что касается ошибок разрешения при доступе к файлу (скрипту?) В браузере, вы должны убедиться, что у вашего пользователя есть правильные разрешения на обслуживание файлов в apache
. Об этом следует позаботиться, отредактировав /etc/httpd/*/httpd.conf
и добавив:
User domain Group www-data