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