Как установить безопасные разрешения для нескольких пользователей и нескольких веб-сайтов?

На сервере Gentoo 3.2.12 с apache2+php существует несколько веб-сайтов:

 /www /website1 /website2 ...etc 

Пользователь apache должен иметь доступ только для чтения ко всем веб-сайтам. На каждом веб-сайте также есть несколько папок, где apache должен иметь доступ на чтение и запись (загружать папки и т. П.).

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

Другие пользователи не должны иметь доступ к /www вообще.

Можно ли это сделать и как?

(PS.Также … поскольку эти люди могут загружать PHP-скрипты, которые затем исполняются в контексте Apache, я думаю, что они могут также обращаться к другим сайтам, косвенно … возможно ли это обеспечить? думать о пути, но кто знает …)

2 Solutions collect form web for “Как установить безопасные разрешения для нескольких пользователей и нескольких веб-сайтов?”

Один из способов:

  • Группируйте группу для каждого сайта, если у людей в этой группе используется umask 0002 поэтому файлы, которые они создают, читаются / записываются для группы и читаются для других по умолчанию.
  • chmod a-rwx корневой каталог каждого сайта, чтобы предотвратить доступ людей за пределами разрешенной группы.
  • Включите ACL для вашей файловой системы и setfacl -m user:apache:rx этот каталог предоставит доступ для чтения пользователю apache в дополнение к другим разрешениям.

Что касается файлов, созданных процессом apache:

  • Чтение файлов, созданных пользователем apache, должно быть возможным для соответствующей группы, если они созданы для чтения во всем мире.
  • Удаление файлов возможно, если они находятся в каталоге, доступном для группы.
  • Если этого недостаточно, вы можете разрешить пользователям использовать sudo для пользователя apache. Возможно, только для выполнения определенных команд, например, для добавления разрешений для групповой записи с использованием списков ACL.

Но, как вы заявили, все ограничения на чтение можно обойти, если пользователи могут запускать произвольные скрипты в качестве пользователя apache. Чтобы противостоять этому, вы можете попытаться использовать сценарии одного сайта, выполненные как конкретный пользователь в соответствующей группе. Я считаю, что есть способ установить это с помощью mod_fcgid . В противном случае apache[suexec] и php[cgi] могут работать для вас.

Чтобы получить еще лучшую изоляцию, вам придется иметь несколько процессов apache, работающих как разные пользователи и, возможно, даже chrooted для разных каталогов. Или в разных модулях OpenVZ, или в разных устройствах Xen, или на разных аппаратных средствах. Как вы можете видеть, существует множество разных уровней изоляции, каждый из которых обеспечивает лучшую изоляцию, чем раньше, за счет потребностей в ресурсах mre.

Обычным решением для этого является suPHP .

  • Зачем было необходимо перезапустить веб-сервер apache для копирования файлов через php на недавно смонтированный файл?
  • Файл, содержащий структуру каталогов
  • Я получаю ошибку «команда не найдена», хотя файл сценария отображается как «ls»,
  • Как я могу запустить php-скрипт?
  • Depsolving для php-pecl-zip
  • Debian lenny 5 установить php-dev
  • как автоматически очистить не удалось загрузить PHP в / tmp?
  • Как обновить PHP на CentOS 6.7 для CiviCRM 4.7 / WordPress?
  • Arch Linux: Apache просто не интерпретирует файлы index.php
  • Используйте существующий wampserver из раздела Windows на linux mint
  • Перенаправление ссылок приложения php
  • Linux и Unix - лучшая ОС в мире.