Ограничение Apache VirtualHosts к их собственному каталогу

Я выполняю Apache на Ubuntu 16.04 и 18.04, и я настроил его для принятия соединений от нескольких доменов. Сайты все хранятся в /var/www/html как так:

example.com
sub.example.com
sample.com
...

Некоторые из этих сайтов являются происходящим работой, и я создал учетные записи пользователей для людей, работающих над этими сайтами. Для таких сайтов я сделал a mount --bind из папки сайта к домашней папке пользователя, к которой они являются chrooted. Так, если пользователь john продолжал работать sample.com, они видели бы папку как /sample.com когда они входят в систему.

Очевидно, идея состоит в том, чтобы ограничить пользователей проектами, за которые они отвечают. Однако, потому что PHP выполняется с www-data, который владеет /var/www/html, любой пользователь может изменить любой файл в /var/www/html использование PHP.

Есть ли любой путь, через .htaccess или какой-либо другой путь, для блокировки PHP в каждой из папок сайта, таким образом, что позволяется только изменить папки в его папке сайта? Т.Е. Если я выполняю Сценарий PHP внутри sample.com, сценарий не должен мочь считать или записать папки выше sample.com.

0
задан 17 September 2018 в 02:13

1 ответ

Вы могли использовать bindfs вместо этого. Поместите весь свой код под /var/www/html/<project>, chown www-data:www-data -R /var/www/html и используйте bindfs смонтировать его в пользовательском каталоге. Примеры:

bindfs -g www-data -m chroot_user1 --create-for-user=www-data --create-for-group=www-data --create-with-perms=0644,a+X /var/www/html/example.com/ /home/chroot_user1/wwwroot_example.com/

Пользователи Chroot будут видеть код как сами как владелец. Но реальные полномочия будут www-данными в соответствии с апачским каталогом.

1
ответ дан 27 October 2019 в 23:12

Другие вопросы по тегам:

Похожие вопросы: