Разрешения пользователей/групп, как они работают?

Разрешения пользователей/групп, как они работают?

Я настраиваю свой сайт и мне нужно переместить некоторые файлы. Я создал простой PHP-скрипт, который включает такие вещи, как mkdir(), copy() и т. д., но я получаю ошибки прав доступа.

После установки прав 777 для затронутых папок все заработало, но на моем старом сайте были установлены права 755.

Если мой пользователь в Plesk — Johnnie, а пользователь файла — Johnnie (а группа — psacln), разве PHP-скрипт не должен иметь доступ? Если нет, что мне нужно установить для пользователя, чтобы мой браузер мог перемещать файлы?

решение1

Что вы подразумеваете под доступом? - просмотреть атрибуты файла; - открыть файл для чтения; - открыть файл для записи; - открыть файл для чтения/записи; - открыть файл для выполнения.

Обратите внимание, что имя пользователя в приложении PHP не совпадает с именем пользователя Unix, даже если у них одинаковое имя.

Обратите внимание, что apache/php работает как пользователь apache, www, www-data, nobody... Это настраивается в конфигурации apache. Найдите это с помощью:

egrep -r '^User|^Group' /etc/{apache*,http*}

Перед любыми изменениями выполните резервное копирование.

Найдите общую группу, в которую входят ваш пользователь и пользователь apache. Если нет, создайте ее.

Измените группу файлов и папок, которые есть в DocumentRoot, на следующую группу:

chown -R myuser:commongroup /var/www/

Измените SUID папок так, чтобы новые файлы принадлежали этой группе:

find /var/www/ -type d -print0|xargs -0r chmod g+rxs
chmod -R u+r,g+r,o= /var/www/

Для папок и файлов, к которым вы хотите предоставить доступ PHP для записи, выполните:

chmod g+w /var/www/folder/subfolder   /var/www/folder/file.txt

решение2

Если вы используете php через cgi или mod-php без дополнительных патчей/модулей для работы с разрешениями, то ваш php-скрипт, вероятно, выполняется с учетной записью веб-сервера. Это часто www-data, nobody или какая-то другая не-root учетная запись.

Вероятно, вам придется добавить пользователя, под управлением которого работает веб-сервер, в группу или создать группу, включающую веб-сервер и любых других пользователей, которым необходим доступ.

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