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

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

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

  • /var/www/bobweb/принадлежитbob:bob

  • /var/www/eveweb/принадлежитeve:eve

и что каждый сайт имеет Apache VirtualHost, ссылающийся на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 записывать данные на эти веб-сайты?

(типичная ситуация с общим хостингом)

решение1

Это не может быть полностью сделано только с помощью прав доступа к файлам — вам следует обратить внимание на приложения, которые вы запускаете, чтобы создать джейлы. Для PHP вы можете использовать "open_basedir" на основе каждого виртуального хоста.

Вам также понадобится что-то подобное на вашем FTP-сервере (вы не указали, какой сервер вы используете, но многие/большинство имеют соответствующую директиву).

Конечно, если вы разрешаете cgis, то все проблемное пространство меняется.

Связанный контент