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