Как можно использовать функцию входа в журнал, чтобы использовать права доступа suPHP. Например, если у меня есть сайт www.example.com
и следующие два пользователя с собственными домашними каталогами, каждый из которых имеет php-скрипт test.php
и скрипт validateUser.php
который принадлежит другому пользователю (root, www- data, apache …) в каталоге /home
.
/Главная/ ├── validateUser.php ├── user1 │ └── test.php └── user2 └── test.php
user1
может получить доступ user2's
скрипту пользователя2, посетив www.example.com/user2/test.php
и наоборот. Вместо этого я хочу передать все входящие запросы, используя что-то вроде mod_rewrite , для validateUser.php
. Тем не менее, это приведет к выполнению всех скриптов как владельца validateUser.php
, а не целевого сценария test.php
.
Есть ли вообще вызов php-скрипта до того, как suPHP начнет работать, а затем либо разрешить suPHP продолжить, либо полностью прекратить выполнение.
EDIT Это вторая щедрость, которую я поднимаю. Первое, что я дал Густаву 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. Но теперь он выполнит AS root, так как это suPHP. Вот где я сдался.
2) Я мог бы использовать предложение mod_auth
Gustav, но мне не нравится, что он требует пароля вверх (например, старые школьные веб-сайты).
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 не будет срабатывать до тех пор, пока пользователь не вернется к своему виртуальному хосту.
Рассматривали ли вы внедрение аутентификации пользователей с помощью mod_auth ? Если вы решите попробовать, есть руководство, которое может оказаться полезным.
Апач 2.2 эквивалентов:
Обратите внимание, что браузер хранит учетные данные и отправляет их в заголовке с каждым сделанным вами запросом.