Потёр... сразу не понял смысла...
chroot 😂
А вообще - itk уже не даст mod_php запустить с правами www.
Остаётся только корректные права ставить. И конфиги лучше держать с правами 600, они, кроме как юзеру сайта, не нужны.
Попробуйте echo exec('ls -la /var/www'); (или даже echo exec('ls -la /'); ) и посмотрите. (хотя от настроек и прав зависит. Но не от basedir)
Himiko добавил 24.12.2010 в 10:03
Всё верно. Проблема, потому что он пытается сделать это через функции php, а не через shell-функции.
1. Права apache у всех файлов? Тогда все и читаются им же.
2. open_basedir тут чем поможет?
Ещё раз говорю, open_basedir не защитит от shell-функций, если они не запрещены. Но есть другие варианты их вызова, через вроде бы безобидные функции.
Вот на тему "должен ли файл читать apache - верно". Точнее должен ли его читать nginx. Apache (юзеру) не нужно читать php-файлы, они должны открываться с правами владельца сайта. Но при использовании nginx, он должен иметь возможность открывать статические файлы и естественно иметь доступ к папке с файлами. А nginx часто работает под тем же юзером, что и apache (www или www-data)
А если мы добавим www-домен с "без поддержки php" ?) Тогда никаких 500 не будет.
Вырубить mod_php можно, но вот тот же phpmyadmin нужно будет заставить корректно работать при cgi.
Не причём тут cgi/fcgi. Просто если Apache идёт prefork и используется cgi/fastcgi, то можно через AddHandler заставить работать php от www, а не от юзера. Т.е. выключаем php и включаем через AddHandler. Получаем обычный mod_php с правами Apache (www). А если используется nginx, то эти права обычно позволяют открывать большинство файлов клиентов.
Apache mpm-itk уже не позволяет получить права www, проверено. (по какой-то причине один раз удалось, не могу сейчас понять как так). А вот cgi/fastcgi без проблем.
Если используется nginx, то уже не прокатит, т.к. ему файлы нужно читать.
Если только ставить на php файлы одни права, а на статику другие. Хотя бы на файлы конфигурации (где важные данные, к примеру, подключения к базе) ставить права 600. Владелец файл прочитает, а другим - незачем.
Прикол ещё в том, что nginx часто работает под тем же юзером, что и apache по-умолчанию. Поэтому достаточно получить права www, чтобы открывать чужие файлы. И никакие open_basedir тут вообще ничем помочь не смогут.
Ну это детсад, что на видео)
В данном случае права и владельцы были как бы корректны.
Без проблем. Я вообще скрывать не собираюсь ничего, кому интересно, пишите в личку. Расскажу.
Кому нужно, те уже обратились за аудитом. Кстати, про mpm-itk я перегнул. (с ним один раз получилось только)
Raistlin, ваш вариант с Virtual пробовали на mpm-itk ?