Назад | Перейти на главную страницу

Общий хостинг: как запретить пользователю видеть чужие файлы, но при этом иметь возможность записи файлов с помощью Apache / PHP

я прочитал Какие разрешения должны иметь файлы / папки моего веб-сайта на веб-сервере Linux? и вот связанный вопрос. Скажем:

и что на каждом сайте есть виртуальный хост 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, все проблемное пространство изменяется.