У меня есть 64-битный сервер Centos6, Apache / 2.2.15, PHP5.3.3, один IP и четыре виртуальных хоста на основе имен и SSL / SNI для предоставления https в дополнение к http. Все эти хосты назначены разным пользователям Linux. У меня есть root-доступ к серверу, и все эти пользователи являются моими собственными, а другие люди не имеют доступа к серверу. Сервер использует suPHP и SuExec для запуска cgi-процессов от имени этих пользователей вместо пользователя apache.
Теперь я понял, что suPHP очень медленный по сравнению с mod_php. Изначально я перешел на suPHP, потому что раньше все 4 учетных записи находились на разных общих серверах, и было довольно легко перенести их на один сервер и поддерживать этих пользователей Linux.
Но поскольку сервер мой собственный, я думаю, что мне не нужен suPHP, и я рассматриваю возможность перехода на использование только DSO (mod_php).
Я рассматриваю следующий рабочий процесс:
1) Изменение пользователя Apache на одного из моих пользователей Linux, например. user1.
2) Смена владельца файлов другого пользователя на user1. У каждого пользователя есть собственный корень документа (public_html) в / home / user1, / home / user2 и т. Д.
3) Поскольку некоторые процессы потребляют слишком много ресурсов и необходимы для запуска командной строки, все пользователи имеют отдельный беспарольный доступ к этому серверу (shell_exec("ssh user1@localhost 'someprogam'")
, shell_exec("ssh user2@localhost 'someprogram'")
и т.д). После этой передачи только пользователь apache (т.е. user1) нуждается в этом, как и доступ по ssh к localhost, поэтому другие ssh-вещи могут быть удалены. Наконечник! Это, кстати, хороший способ переопределить ограничения ресурсов php на общем (или любом другом) сервере. Обычно вы используете ssh на удаленный сервер, но почему бы и не на локальный сервер. Особенно полезно при mogrifying больших изображений. Этот метод основан на том факте, что через ssh программа запускается как программа оболочки (в отличие от CGI), и оболочка имеет не так много памяти и ограничений по времени выполнения.
После этих шагов пользователь apache (например, user1) будет иметь доступ rwx к / home и всем, что ниже него.
Этот рабочий процесс в порядке? Я предполагаю, что нет никаких угроз безопасности (снаружи или внутри), потому что все пользователи и сайты на сервере являются моими собственными, и я не могу найти никакой причины, по которой DSO (mod_php) в этом случае был бы более небезопасным, чем suPHP.
Этот перенос требует изменения десятков строк кода, но я предполагаю, что ускорение настолько велико, что процесс имеет смысл.
Возможно, вместо этого рассмотрите возможность перехода на PHP FastCGI, вы получите все преимущества скорости mod-php5, но вы можете сохранить разделение привилегий пользователей.