Я выполняю 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
.
Вы могли использовать 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-данными в соответствии с апачским каталогом.