Как для PHP ограничить права доступа за домашнюю директорию?

SocFishing
На сайте с 26.09.2013
Offline
118
2563

1. Существует две директории

/var/www/user1

/var/www/user2

2. Есть два аккаунта, с этими домашними директориями

user1

user2

3. Настроен контроль доступа через lshell, что нельзя выйти вне этих домашних директорий из-под ssh

Вопрос: Как запретить доступ PHP скрипту иметь права на чтение вне этих директорий. Так к примеру срабатывает:

<?php
echo file_get_contents('/etc/nginx/conf.d/domain.conf');
echo shell_exec('ls /');

при запуске user1:~$php5 /var/www/user1/1.php

★Сервис идентифицирует (https://socfishing.com/?utm_source=searchengines) посетителей вашего сайта и предоставляет их профили ВКонтакте, Телефон, Почта! Цены копеечные, работаем 8 лет.
R
На сайте с 14.02.2010
Offline
77
#1

частный случай, если только для пхп, то, как вариант, настроить php-fpm соответствующим образом, дабы он работал под определенным uid/gid, а уже в хоумдиры, соответственно, будет ограничивать доступ ОС...

упрощенный вариант (общий случай) это настроить в апаче mpm-itk по аналогии, то есть прописать правильно AssignUserID, а далее ОС уже сама разрулит доступы...

есть еще много вариантов, к примеру nginx+php-fpm, но там все более-запущенно и требует извратов с группами, sudi-битами и прочими, так что вам это вряд ли нужно...

что такое ishell не знаю и даже нагуглить что-то сходу не получается, потому и вам рекомендую забить на него и использовать штатные средства ОС, то есть просто прописать должным образом пермишены на домашние каталоги (chmod 700).

гуглите apache+mpm-itk+AssignUserID...

SocFishing
На сайте с 26.09.2013
Offline
118
#2

r0mik, дело в том, что ваши способы уместны только для открывания php через веб-вервер. А у меня вызов идет через ssh прмой к php.

lshell это упрощенный вариант chroot. Скорее всего все это нужно ограничивать через chroot, но это слишком запаристо, так как нужно пробрасывать php в корневой каталог.

быть может задачу можно решить через safe mode, наведите на путь?

edogs software
На сайте с 15.12.2005
Offline
775
#3
SocFishing:
быть может задачу можно решить через safe mode, наведите на путь?

Начиная с 5.3 safe_mode устарел, а в 5.4 уже удален.

Не вполне понятно от кого Вы пытаетесь защититься и для чего.

Кто мешает, например, php при вызове из ssh запускать от нужного владельца? Которому и прописать нужные права.

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft
Z
На сайте с 06.09.2012
Offline
129
#4
SocFishing:

Вопрос: Как запретить доступ PHP скрипту иметь права на чтение вне этих директорий.

1. В юниксо-подобных системах у прав нет запретов, есть только разрешения. Соответственно у всех файлов, которые нельзя читать юзеру нужно снять разрешения чтения для всех юзеров.

2. В зависимости от того, как PHP скрипт запускается, можно и чрутнуть перед дропом привилегий и в сэндбоксе запускать.

Черный список врунов и обманщиков: ua-hosting.company, riaas.ru, takewyn.ru, yahoster/cadedic, Andreylab
SocFishing
На сайте с 26.09.2013
Offline
118
#5
edogs:

Кто мешает, например, php при вызове из ssh запускать от нужного владельца? Которому и прописать нужные права.

Пытаюсь разграничить доступ между программистами. Так как в ряде проектов новички получают обзор файлов всего сервера. Как разграничить права, ведь учетная запись user1 имеет доступ к обзору корневой директории сервера и всех сопутствующих файлов проекта.

Давайте я приведу пример:

/var/www/user1

/var/www/user2

1. нужно разрешить иметь полные права user1 только /var/www/user1

2. нужно запретить просмотр всех файлов, включая корневой / и /etc /var/www/user2

Как это сделать? подробнее?

edogs software
На сайте с 15.12.2005
Offline
775
#6
SocFishing:
Пытаюсь разграничить доступ между программистами. Так как в ряде проектов новички получают обзор файлов всего сервера. Как разграничить права, ведь учетная запись user1 имеет доступ к обзору корневой директории сервера и всех сопутствующих файлов проекта.

Давайте я приведу пример:
/var/www/user1
/var/www/user2

1. нужно разрешить иметь полные права user1 только /var/www/user1
2. нужно запретить просмотр всех файлов, включая корневой / и /etc /var/www/user2

Как это сделать? подробнее?

Настраивайте chroot, по другому в Вашей ситуации никак.

Скрипты выполняющиеся из lshell будут выполняться под правами вышестоящего bash, без вариантов.

Так что chroot-те user1 в /var/www/user1 и все будет пучком.

Ничего запаристого там нет.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий