Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Ограничить доступ для php и/или apache
Форумы портала PHP.SU » Серверное администрирование » Apache и другие веб-серверы » Ограничить доступ для php и/или apache

Страниц (1): [1]
 

1. REZER - 05 Мая, 2015 - 17:04:59 - перейти к сообщению
Здравствуйте!

Столкнулся с такой вещью, ранее я думал, что если поставить права на файл 644, то другой php файл не сможет его отредактировать и удалить, только прочитать.

Некоторое время я замечал изменение таких файлов, в них появлялись чужие куски кода, я понимал, что есть где-то дырка на сайте, думал неужели пароль от FTP у меня узнали, менял сразу же.

Но, сегодня решил разобраться с этим, создал PHP файл и понял, что он может редактировать абсолютно все файлы. Пошёл дальше, поставил на специальный файл парва доступа 444, и всё равно я смог его удалить через PHP.

Тестировал так, создал файл test.php в корне сайта и запускал его с браузера, то есть обработка была через Apache, также ещё установлен nginx через панель, в консоли не трогал, единственное что, увеличил в конфигурации максимально загружаемый вес файла.

-------------------------------- -----

Собственно вопрос, мне нужно сделать так, чтобы запуская PHP через браузер, он мог редактировать только те файлы и папки, на которые стоят права 666 и 777 соответственно.

Подскажите пожалуйста, как это сделать?

Ещё один не критичный вопрос: как для отдельных сайтов сделать запрет на чтение и изменения файлов выше корня сайта, например чтобы файл /var/www/test/test1.ru/index.php не смог прочитать или отредактировать/удалить файл /var/www/test/test2.ru/index.php

Этот вопрос не критичный, но всё же, если кто знает, то буду благодарен.

P.S. Панель управления ISP Manager 5 Lite, у них вопрос задавал, ответа нет. Сервер выделенный, то есть хостер мне не поможет.
2. Panoptik - 05 Мая, 2015 - 18:28:03 - перейти к сообщению
за удаление и переименование файлов отвечают права папки в которой этот файл находится - это то что касается удалить. то есть если папке поставить права r (вопрос кто владелец и кто выполняет действие) то нельзя будет писать в папке (создавать новые файлы внутри), и изменять что либо внутри (то есть переименовывать файлы или удалять их)

что касательно ограничить возможность доступа пхп скрипта к файлам, есть возможность настроить интерпретатор
http://php.net/manual/en/ini.cor...ini.open-basedir
3. REZER - 05 Мая, 2015 - 19:24:48 - перейти к сообщению
На папку стоят права 755 [drwxr-xr-x]
А вот на счёт владельца, я тоже думаю, что из-за этого.

Мне кажется, нужно сделать так, что например группа "apache" должна иметь какой-то пониженный приоритет, чтобы не могла вообще ничего редактировать, кроме файлов, которые ему принадлежат или его группе. Ну и конечно мог редактировать ещё те файлы и папки, в которых стоят разрешение в публичных правах, когда например на файл стоит CHMOD 666, на папку 777.

У меня же сейчас есть файл 123.txt, владелец "user", группа "user", CHMOD 644, лежит в папке, у которой права CHMOD 755, владелец и группа "user", что в принципе означает, что никто не может редактировать файл, кроме самого пользователя "user" и "root". На деле же, пользователь или группа "apache" может его отредактировать без проблем.

Собственно и мысли такие, что у пользователя или группы "apache" завышены его приоритеты, то есть разрешено больше, чем нужно, в нашем случае больше, чем у пользователя "user".

Вообще я сервер не настраивал, был просто установлен ISP Manager, который сам установил всё программное обеспечение на сервер. Это чтобы было понятно, что я никуда не лазил, особо мозгов в этом нет.

P.S. Владельца и группу "user" я ввёл вымышленную, у меня она называется по другому. Пользователя "apache" я не вижу, но могу в панели управления выбрать, что он будет являться владельцем файла/папки.
4. REZER - 05 Мая, 2015 - 19:26:46 - перейти к сообщению
Вот скриншот прав на папку
5. MiksIr - 05 Мая, 2015 - 20:08:30 - перейти к сообщению
REZER пишет:
На деле же, пользователь или группа "apache" может его отредактировать без проблем.

А ты уверен, что PHP работает от пользователя apache? Новые файлы PHP создает с каким пользователем?
6. REZER - 06 Мая, 2015 - 06:58:51 - перейти к сообщению
MiksIr пишет:
А ты уверен, что PHP работает от пользователя apache? Новые файлы PHP создает с каким пользователем?


Точно, владелец файла, созданного через PHP является "user" и группа то же "user".
Можно как-то это исправить?
7. MiksIr - 06 Мая, 2015 - 13:57:25 - перейти к сообщению
На уровне ISP Manager не знаю.
По идее - завести еще одного пользователя user2 и сменить владельца существующих файлов через шел (ssh) используя root. Ну и обеспечить права чтения для этого юзера.
8. REZER - 11 Мая, 2015 - 09:45:39 - перейти к сообщению
Ребят, ура!!!
Нашёл решение, всё дело в том, как и писалось в пользователе, под которым работал apache ли ещё что-то.
У меня стоит ISP Manager 5, на нём решил проблему так:

1. Авторизовался под root пользователем.
2. Зашёл во вкладку "Домены - www домены".
3. Далее в списке выбираем нужный домен, и нажимаем на иконку "Конфиг".
4. Появится окно редактора, в котором будет вот такая строчка:

AssignUserID user user

5. Здесь получается "user" может быть вашим именем пользователя, необходимо заменить её на:

AssignUserID apache apache

6. После я перезагрузил сервер, но можно просто перезапустить сервис (службу) httpd.

- После в папке можно создавать папки и файлы, если на неё стоят права CHMOD 777.
- Файлы можно изменять, только если на них стоят права 666.
- Новые файлы и папки создаются от имени пользователя и группы "apache".

P.S. Но такое действие нужно делать для каждого домена отдельно, если кто знает, как сделать, чтобы такое изначально прописывалось в конфиге, то сообщите пожалуйста.

 

Powered by ExBB FM 1.0 RC1