Как ограничить разрешения, которые имеет скрипт php для чтения / записи в файлы [windows / apache]?

(начинающий php / apache здесь)

Использование Apache (в качестве службы на Windows) с PHP я понял, что по умолчанию веб-пользователь может получить доступ только к \htdocs содержимое, сам скрипт PHP может читать где угодно (не ограничиваясь внутри \htdocs). Что произойдет, если мы не уверены в содержании скрипта PHP и хотим ограничить доступ к файловой системе?

Предположим, что мы хотим, чтобы люди могли изменять содержимое файлов .php, но в то же время применять ограничения на уровне файловой системы. например: script1.php может читать / писать / выполнять все что угодно c:\apache\htdocs. Может только для чтения из c:\f1\ но может НЕ получить доступ к любому другому каталогу в целом.

Как можно убедиться, что его / ее PHP-программа имеет очень определенные разрешения в окнах при чтении или записи (например, с file_exists(), mkdir(), proc_open(), fwrite()ГД:imagejpg()) когда снаружи \htdocs?

Я прочитал, что Apache как сервис работает как LocalSystem учетная запись что есть полное чтение и запись (777) разрешения на большинстве локальных путей.1

  • Было бы правильно, если бы я создал новую (виртуальную?) Учетную запись пользователя, назначил ее службе apache и изменил разрешения [rwx] для этой конкретной учетной записи по своему вкусу?
  • Есть ли способ создать разные наборы ограничений для разных скриптов PHP? например. Кроме того c:\apache\htdocs, script1.php также разрешено чтение-запись в c:\f1 в то время как script2.php разрешен только для чтения из c:\f2
  • Кроме того, возможно ли создать «менеджер разрешений» — скрипт PHP, который при выполнении назначает права другим скриптам php? например, все .php-скрипты размером менее 120 байт могут читать и писать в c:\f1

Спасибо за ваше время,

-Fotis

1

Решение

В ваших настройках Apache, httpd.confдолжно быть что-то вроде этого:

#
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User www-data
Group www-data

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

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]