Разрешить PHP писать файл без 777

Я создаю простой веб-сайт, предоставленный моим университетом. У меня нет доступа к базе данных, поэтому я храню все данные в виде плоского файла. Проблема, с которой я столкнулся, связана с правами доступа к файлам. Мне нужен PHP, чтобы иметь возможность читать и записывать файл данных, но я не хочу устанавливать для этого файла значение 777, так как любой другой пользователь системы может его изменить, у них уже есть доступ на чтение к веб-каталогам каждого пользователя. У кого-нибудь есть идеи, как этого добиться?

заранее спасибо

4 ответа

Просто установите 0755 (или ниже), но убедитесь, что владельцем каталога является пользователь, в контексте которого работает apache (или другой веб-сервер).

например

chown apache:apache /var/www/html

Вы можете получить информацию о пользователе, используя phpinfo(), например.

ОБНОВИТЬ

Если вы делитесь apache с несколькими сайтами, то вы должны разделить свой контент по веб-каталогам пользователей

http://httpd.apache.org/docs/2.2/howto/public_html.html

Вы можете использовать suPHP для выполнения этой задачи. Если вы можете использовать его, просто измените права доступа к файлу на 0700, и все будет работать так, как вы хотите.

Идеальная ситуация была бы, если файловая система на сервере поддерживает posix acls, поэтому вы можете добавить доступ на запись к определенным файлам для uid, под которым работает веб-сервер.

И у вас достаточно доступа к файловой системе (желательно через учетную запись оболочки) для установки прав ACL.

Смотрите man acl для обзора и man setfacl для деталей о том, как их установить.

Вы можете использовать команду ниже, чтобы установить разрешение на чтение / запись:

sudo chown www-data PATH

если www-данные не существуют, вы можете заменить их на apache:apache или apache.

Другие вопросы по тегам