Реализация входа в систему вместе с suPHP

Как можно создать подобную функцию входа в систему для использования разрешений файлов 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 , посетив www.example.com/user2/test.php , и наоборот. Вместо этого я хочу направлять все входящие запросы, используя что-то вроде mod_rewrite , на validateUser.php . Однако это приведет к выполнению всех сценариев от имени владельца validateUser.php , а не целевого сценария test.php .

Есть ли способ вызвать php-скрипт до того, как suPHP сработает, а затем либо разрешить suPHP продолжить, либо полностью прервать его.


ИЗМЕНИТЬ Это вторая награда, которую я назначаю. На первое, что я дал Густаву b / c, он дал хороший частичный ответ . Я упомяну то, что я пытался до сих пор, и почему ни один из них не работает для меня.

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 не сработает, пока пользователь не будет перенаправлен обратно на свой собственный виртуальный хост.

7
задан Community 23 May 2017 в 12:29
поделиться