Как лучше всего настроить сервер LAMP с точки зрения пользователей и групп Linux? Если на одном сервере размещено несколько сайтов, лучше всего иметь одного пользователя, которому принадлежат все исходные файлы сайта (и загрузки), который находится в той же группе, что и apache, или иметь другого пользователя для каждого сайта (чтобы на каждом сайте свой кронтаб)? Или что-то совсем другое?
По какой-то причине этот вопрос никогда не рассматривается в книгах по PHP / MySQL / Linux, с которыми я сталкивался.






На нашей платформе каждый сайт htdocs и т. д. Имеет своего пользователя. Это означает, что если один сайт будет скомпрометирован, остальные будут в порядке.
Если это небольшое количество крупных сайтов, вы можете обнаружить, что разделение вашего сервера на несколько виртуальных машин с использованием чего-то вроде Xen является лучшим вариантом, чем простое разделение по пользователям. Это улучшит изоляцию ваших сайтов и упростит перенос сайта на собственное оборудование, если в будущем один из них начнет намного интенсивнее использовать ресурсы, чем другие.
Я предполагаю, что вы не хотите сходить с ума и приобретать WHM для cPanel и, возможно, захотите сделать это без особого труда.
Я думаю, что лучше всего, чтобы каждый пользователь имел доступ к своему пространству со своим именем пользователя и группой, особенно если посторонние пользователи могут использовать веб-сервер.
Если у вас более 10 доменов и пользователей и вы хотите, чтобы учетные записи были разделены на их собственное пространство, я бы подумал об использовании Webmin с VirtualMin, установленным на сервере. Это легко решает подобные проблемы в рамках красивой и бесплатной установки. В противном случае вам придется покупать коммерческий продукт или обрабатывать все вручную - настоящая боль, но это можно сделать (не рекомендуется для коммерческого предприятия).
Кроме того, Xen и VMS могут быть излишними, но ими не так легко управлять, как Webmin / VirtualMin для 10-100+ учетных записей.
Лучший выбор - создать VirtualHost для каждого домена, используя Apache с модулем suPHP. Таким образом, каждый сайт будет принадлежать пользователю и запускаться с его разрешения. Webroot каждого сайта должен быть помещен в домашний каталог пользователя, чтобы предотвратить локальные атаки.
Если вы используете одного и того же пользователя для всех веб-сайтов, это означает, что пользователь с веб-сайта A может иметь доступ для чтения / записи файлов на веб-сайте B.
В течение нескольких лет я занимался хостингом небольшого уровня, и мой ответ: «Это зависит от обстоятельств».
Прежде всего, есть разница между модулем Apache (mod_php). CGI и FastCGI. Хороший список со всеми плюсами и минусами можно найти здесь: Режимы Apache php
Что касается безопасности, у всех режимов есть свои плюсы и минусы.
Поскольку у нас было только относительно небольшое количество доменов с умеренным трафиком, я решил остаться с mod_php и использовал конфигурацию vhost.
Я также использовал разных пользователей FTP для каждого корневого каталога vhost (конечно).
Настройка vhosts (по одному для каждого клиента) позволяет легко отключать домены, не копаясь в смехотворно большом httpd.conf и не создавая ошибок.