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

На сервере 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 .

  • Установка PHP7.0 из sid на jessie
  • Невозможно установить композитор на FreeBSD 10
  • создание php-5.3 на арки linux
  • Curl not found (Glype)
  • процесс работает без амперсанда, но не работает с амперсандом
  • Я не могу удалить папку с сервера
  • Могу ли я установить PHP на Chumby One?
  • Медленное разрешение DNS от curl / lynx и т. Д.
  • CentOS, файл PHP работает от браузера, а не от демона cron
  • PHP не использует сокеты MySQL по умолчанию
  • Почему phpinfo () показывает версию 5.5.9, но php -v показывает версию 7.0
  • Linux и Unix - лучшая ОС в мире.