у меня есть 2сайты/приложенияна сервере; собственное приложение и Nextcloud. Nextcloud будет использовать files_external
плагин для хранения, который позволяетместныймонтирует, но я делаюНЕТхотим, чтобы он мог просматривать исходный код фирменного приложения... mod_selinux
и, таким образом, дочерние элементы sedomain.
Я использую его mod_selinux
для создания дочерних доменов и назначаю дочерний идентификатор каждому сайту, а также соответствующим образом маркирую их каталоги приложений и данных в определениях виртуальных хостов...
httpd.conf
selinuxServerDomain *:s0-s0:c0.c100
проприетарный.vhost.conf
selinuxDomainVal *:s0:c10
nextcloud.vhost.conf
selinuxDomainVal *:s0:c20
К каталогу приложения, где расположен код, применены следующие разрешения и контексты...
drwxr-x---. 4 apache apache unconfined_u:object_r:httpd_sys_content_t:s0:c10 4096 Jan 17 17:02 proprietary_app_dir
drwxr-x---. 15 apache apache unconfined_u:object_r:httpd_sys_content_t:s0:c20 4096 Jan 20 08:09 nextcloud
Проблема...
Все работает, но проблема в том, что я все еще могу просматривать папку фирменного приложения с помощью nextcloud, даже несмотря на то, что каталог фирменного приложения имеет ограниченный контекст домена s0:c10
, и поскольку vhost определен, Nextcloudдолженработать как s0:c20
.
Я знаю, что SELinux выполняет свою работу, потому что я не могу просматривать папки, такие как /etc, хотядругойу пользователей есть права на чтение, я могу только просматривать папки с контекстами, httpd_sys_(rw_)content_t
как и должно быть.
Я бы ожидал, что дочерний процесс c20
не должен иметь возможности читать папку, запрашивающую c10
. Поэтому единственное, что я могу придумать, это то, что порожденные дочерние процессы httpd_t
(через mod_selinux
) не используют selinuxDomainVal
контексты, которые я определил в файлах vhost.
Я не уверен, что я сделал не так, я неправильно настроил это как-то или я забыл какой-то шаг? Буду признателен за любую помощь, которую вы можете предложить.
Дополнительная информация...
- CentOS8
- Апач 2.4.37
- PHP 7.3 (через remi)
- PHP-FPM
- mod_selinux (перепакованный RPM из fedora 31)
решение1
Nextcloud — это программное обеспечение на основе PHP, не уверен, как работает ваше фирменное (может быть, также PHP?). Фактический просмотр каталогов в Nextcloud происходит с помощью PHP, в вашем случае с помощью PHP-FPM, насколько я понимаю. Я бы предположил, что вы либо используете один и тот же пул PHP-FPM для обоих VHosts, либо контекст PHP-FPM SELinux одинаков для обоих пулов. Даже мое предположение может быть неверным, вам следует также предоставить здесь подробности относительно вашей конфигурации PHP и того, что вы сделали (или не сделали) относительно SELinux.