
<?php echo `whoami`; ?>
Итак, это возвращает 'root', и я не знаю, как это предотвратить. Я использую WebHost Manager / CPanel, который должен создавать несколько пользователей/vhosts и заставлять Apache порождать свой процесс как этого пользователя/группу. Этого не происходит.
Если я войду в WHM и открою раздел конфигурации PHP и SuExec, мои настройки будут следующими:
Default PHP Version (.php files) 5
PHP 5 Handler cgi
PHP 4 Handler none
Apache suEXEC on
Что не так? Как мне заставить Apache работать от имени правильного пользователя, а не root?
решение1
Если вы хотите, чтобы каждый сайт работал как его собственный пользователь, правильная настройка PHP 5 Handler — 'suPHP', а не 'CGI'. После того, как вы измените это, вы должны увидеть, что ваши whoami
отчеты содержат отдельных пользователей.
Обратите внимание, что вам может потребоваться запустить EasyApache и выбрать "Mod SuPHP" во время этого процесса, чтобы перекомпилировать Apache / PHP, чтобы эта опция была доступна в первую очередь. Это делается в:
Главная >> Программное обеспечение >> EasyApache (Apache Update) или в командной строке/scripts/easyapache
решение2
Сам Apache, скорее всего, запущен как пользователь apache, но благодаря SuExec, PHP-скрипты, принадлежащие root, будут запущены как root. Вот почему ваша whoami
команда возвращает пользователя root.
Если вы измените владельца файлов в корневом каталоге документов на «apache» или «www-data» (в зависимости от того, какой из них использует ваш сервер), то эта же команда вернет нового владельца файла.
Вероятно, также стоит убедиться, что все ваши PHP-скрипты chmod 555
и каталоги не принадлежат тому же пользователю, что и файлы. Это позволит CGI выполнять скрипты, но будет означать, что если в одном из PHP-скриптов будет обнаружена уязвимость, он не сможет изменить себя или любой другой скрипт, и не сможет создать новый скрипт в любом из каталогов. Есть еще много вещей, которые может сделать злоумышленник, если он обнаружит уязвимость в PHP-скрипте, но все, что вы можете сделать, чтобы усложнить ему задачу, стоит того.