Я пытаюсь настроить сеансы PHP для suPHP (см. здесь ).Мне нужно, чтобы мой файл проверки php принадлежал пользователю, чтобы при запуске suPHP это делалось для правильного пользователя.Однако я также не хочу, чтобы пользователь имел доступ к этому файлу, поэтому он может отредактировать его, чтобы просто вернуть true, а не проверять базу данных.
Моя первая попытка была похожа на эту (где работает Apacheот имени пользователя www-data
)
/etc/validate
├── [drwx------ www-data ] user1
│ └── [-rwx------ user1 ] validate.php
/var/www/
└── [drwx------ user1 ] user1
└── [-rwx------ user1 ] index.html
Затем перенаправьте веб-страницы на страницу подтверждения, после чего подтвердите, затем верните /var/www/user1/index.html
RewriteCond %{REQUEST_URI} !^/xyz
RewriteRule ^(.*) /etc/validate/user1/validate.php?uri=$1
Однако suPHP жалуется, что ядоступ к чему-то за пределами моего docroot (/var/www/user1
).Я не хочу устанавливать docroot на /
и обновлять файл suphp.conf
, чтобы check_vhost_docroot=false
не исправлял (и я не хочу, чтобы это было исправлено).Поэтому вместо этого я просто переместил /etc/validate
в /var/www
примерно так (это немного грязно, я знаю)
/var/www/
└── [drwx------ user1 ] user1
├── [-rwx------ user1 ] index.html
└── [dr-x------ www-data ] validate
└── [-rwx------ user1 ] validate.php
Так что теперь проверочный файл
- Внутри docroot
- Владелец user1
- Не редактируется user1
Но теперь, если я пытаюсь загрузить страницу, я получаю следующую ошибку
Directory /var/www/user1/validate is not owned by user1
В этот момент я теряю терпение, поэтому я просто вставляю туда другую фиктивную папку, чтобы структура файла выглядела так
/var/www/
└── [drwx------ user1 ] user1
├── [-rwx------ user1 ] index.html
└── [dr-x------ www-data ] validate
└── [drwx------ user1 ] dummy
└── [-rwx------ user1 ] validate.php
Теперь, когда я пытаюсь загрузить страницу, Apache говорит мне: «Выу меня нет разрешения на доступ к xyz на этом сервере. "где xyz
- это то, что следует за моим доменным именем.Я не знаю, почему Apache говорит мне об этом, потому что я не пытаюсь получить доступ к конечным значениям в виде файла / папки.Я думаю, что перенаправление сбой, и Apache просто предполагает, что это жесткая ссылка, которая терпит неудачу.
Может кто-нибудь сказать мне, что я делаю неправильно, или предоставить альтернативный способ запретить пользователям возможность редактировать свои файлы,Он не мог попасть в каталог dummy
, поскольку его разрешения были rwx------
, и только user1
мог cd
войти в него.Когда я изменил права доступа с 0700
на 0755
, он вернулся к ошибкам suPHP.Таким образом, теперь возникает вопрос: как заставить suPHP выполнять сценарии, когда одна из его папок upstage принадлежит кому-то другому?
EDIT: Теперь я понимаю, почему Apache жаловался,Не может попасть в