Могу ли я использовать php fwrite с правами доступа к файлам 644?

Я пытаюсь настроить автоматическое обновление .htaccess. Это явно должно быть максимально безопасным, однако сейчас лучшее, что я могу сделать с правами доступа к файлу, — это 666.

Что я могу сделать, чтобы настроить мой сервер или php-код, чтобы команда fwrite() моего скрипта работала с 644 или лучше? Например, есть ли способ настроить мои скрипты для запуска от имени владельца?

РЕДАКТИРОВАТЬ:
Я понял, что на самом деле у меня была проблема с разрешениями, вы должны иметь возможность использовать fwrite без проблем с разрешениями 644. Смотрите мой ответ ниже.


person filip    schedule 19.05.2010    source источник


Ответы (3)


Процесс apache всегда должен запускаться как apache:apache — если вы должны разрешить запись в исполняемые каталоги (т. е. DocumentRoot), создайте группу, добавьте apache и установите групповые права записи (таким образом, 664).

Лучше всего обновлять .htaccess с помощью cron-скрипта, считывающего данные конфигурации из базы данных, поскольку предоставление Apache разрешений на запись в исполняемые каталоги не одобряется в случае, если уязвимость в вашем коде позволяет злоумышленнику записывать новые файлы в эти каталоги.

person Andy    schedule 19.05.2010
comment
+1 для крона. Но если он находится на общем сервере, установка apache в группу поставит его файлы на 99% от первоначального риска. - person webbiedave; 20.05.2010
comment
Я не очень хорошо знаком с использованием заданий cron ... смогу ли я запустить скрипт cron, когда администратор нажимает кнопку «Обновить .htaccess» на моей php-странице, например? Или их можно настроить на выполнение только через определенные промежутки времени, например, каждый час, день, месяц и т. д.? Я нахожусь на выделенном хосте, кстати. - person filip; 20.05.2010
comment
Да, cron — это планировщик заданий, основанный на времени. Вы можете настроить запуск cron каждую минуту (или две) и проверять наличие записи в таблице БД либо с кодом инструкции (безопаснее), либо с фактическим кодом для ввода .htaccess (менее безопасно). примеры cron: en.wikipedia.org/wiki/Cron - person Andy; 20.05.2010

Вы не можете изменить владельца процесса. Если вы находитесь на общем сервере, посмотрите, есть ли у них suPHP в качестве опции.

person webbiedave    schedule 19.05.2010

Эти предложения были замечательными, однако в конце концов я понял, что ответ на мой вопрос ДА, и вам вообще ничего не нужно делать... при условии, что пользователь-владелец файл/каталог, в который вы пытаетесь записать, является тем же пользователем, от имени которого запущен скрипт. Моя ошибка заключалась в том, что я случайно потерял право собственности на файл, поэтому для записи в мои файлы требовались более высокие разрешения 666 и 777. . Это имеет смысл, потому что Wordpress может писать в .htaccess со стандартными разрешениями.

Теперь у меня есть настройки, когда файл, работающий как user1, записывается в файл, принадлежащий user1:user1, и никаких проблем. Каталоги установлены на 755, .htaccess файл установлен на 644.

person filip    schedule 03.12.2010