я прочитал Какие разрешения должны иметь файлы / папки моего веб-сайта на веб-сервере Linux? и вот связанный вопрос. Скажем:
/var/www/bobweb/
принадлежит bob:bob
/var/www/eveweb/
принадлежит eve:eve
и что на каждом сайте есть виртуальный хост Apache, ссылающийся на bobweb.com и eveweb.com.
Каждый веб-сайт должен быть доступен для записи Apache (на обоих веб-сайтах есть загрузчик изображений), поэтому я часто читаю:
"Просто сделать
chgrp -R www-data /var/www/bobweb/
, идем для Евы, и все! "
Это дает:
drwxrwx--- 3 bob www-data 4096 Jan 9 17:45 bobweb
drwxrwx--- 5 eve www-data 4096 Feb 26 2019 eveweb
Это действительно мешает Бобу посещать файлы Евы из оболочки / SSH и наоборот.
Но похоже, что Ева могла написать сценарий PHP (запускаемый www-data
) читать (или даже изменять) /var/www/bobweb/wp-config.php
(таким образом украдя пароль БД Боба!).
Вопрос: как изменить права собственности и разрешения для пользователей и групп, чтобы Боб не мог читать файлы Евы и наоборот, но при этом позволял Apache + PHP записывать данные на эти веб-сайты?
(типичная ситуация с виртуальным хостингом)
Это не может быть полностью выполнено с помощью одних только разрешений на файлы - вы должны смотреть на приложения, которые вы запускаете, чтобы создавать тюрьмы. Для PHP вы можете использовать "open_basedir"для каждого виртуального хоста.
Вам также понадобится нечто подобное на вашем FTP-сервере (вы не сообщили, какой сервер вы используете, но у многих / большинства есть соответствующая директива).
Конечно, если вы разрешаете cgis, все проблемное пространство изменяется.