Проблема с правами пользователя Linux

Проблема с правами пользователя Linux

Каждый раз, когда я создаю новый файл в «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

Связанный контент