Как можно создать функцию входа в систему, чтобы использовать права доступа к файлу suPHP.Например, если у меня есть веб-сайт по адресу www.example.com
и два следующих пользователя со своими собственными домашними каталогами, каждый из которых имеет скрипт php test.php
и скрипт validateUser.php
, принадлежащий другому пользователю (root, www-data,apache ...) в каталоге /home
.
/home/
├── validateUser.php
├── user1
│ └── test.php
└── user2
└── test.php
user1
может получить доступ к скрипту user2's
, посетив www.example.com/user2/test.php
, и наоборот.Вместо этого я хочу направить все входящие запросы, используя что-то вроде mod_rewrite , на validateUser.php
.Однако это приведет к выполнению всех сценариев как владельца validateUser.php
, а не целевого сценария test.php
.
В любом случае можно ли вызвать сценарий php до запуска suPHP, а затем либоразрешить suPHP продолжить или полностью прервать.
РЕДАКТИРОВАТЬ Это вторая награда, которую я назначаю.Сначала я дал Густаву б / к, он дал хороший частичный ответ .Я упомяну, что я пытался до сих пор, и почему ни один из них не работает для меня.
1) Я пытался использовать mod_rewrite , чтобы перенаправить URL-адрес на validateUser.php
, чтобы либо войти в систему.пользователь, или вызовите любой сценарий, который они хотели вызвать.Проблема в том, что я настроил свои виртуальные хосты так, чтобы у каждого пользователя был свой виртуальный сайт (т. Е. www.user1.example.com
, www.user2.example.com
... если это плохой подход к дизайну, смело указывайте на это).Поэтому, хотя ОС видит файловую структуру, как указано выше, в оперативном режиме корневые каталоги настроены так:
VirtualHost = www.user1.example.com
├── validateUser.php
└── test.php
VirtualHost = www.user2.example.com
├── validateUser.php
└── test.php
Естественно, я только что переместил копию validateUser.php
в каталог каждого пользователя.Проблема в том, что теперь пользователь может удалить этот файл и поместить туда все, что хочет, например, вообще не требовать входа в систему.Чтобы обойти это, сделайте домашнюю папку липкой (что я бы никогда не порекомендовал сделать с домашней папкой) и сделайте validateUser.php
владельцем root.Но теперь он будет работать как root, так как это suPHP.Вот где я сдался.
2) Я мог бы использовать предложение Густава mod_auth
, но мне не нравится, что он требует пароль заранее (как на старых школьных веб-сайтах).
3) Я рассмотрел вариант 1), если бы я мог перенаправить между виртуальными хостами.Например, реструктурируйте виртуальные хосты следующим образом:
VirtualHost = www.user1.example.com
└── test.php
VirtualHost = www.user2.example.com
└── test.php
VirtualHost = www.admin.example.com
└── validateUser.php
Затем используйте mod_rewrite для перенаправления ВСЕГО трафика от пользователей на www.admin.example.com/validateUser.php
, и если пользователь вошел в систему (или если вход в систему успешен), пользовательперенаправлены обратно на сайт, на котором они первоначально пытались войти.Преимущество этого, если это возможно, заключается в том, что suPHP не будет активирован, пока пользователь не будет перенаправлен обратно на свой виртуальный хост.