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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Ограничить доступ для php и/или apache

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: PHP файл может удалить файл с CHMOD 444
REZER
Отправлено: 05 Мая, 2015 - 17:04:59
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Окт. 2013  


Помог: 0 раз(а)




Здравствуйте!

Столкнулся с такой вещью, ранее я думал, что если поставить права на файл 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, у них вопрос задавал, ответа нет. Сервер выделенный, то есть хостер мне не поможет.

(Отредактировано автором: 05 Мая, 2015 - 17:07:04)

 
 Top
Panoptik
Отправлено: 05 Мая, 2015 - 18:28:03
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




за удаление и переименование файлов отвечают права папки в которой этот файл находится - это то что касается удалить. то есть если папке поставить права r (вопрос кто владелец и кто выполняет действие) то нельзя будет писать в папке (создавать новые файлы внутри), и изменять что либо внутри (то есть переименовывать файлы или удалять их)

что касательно ограничить возможность доступа пхп скрипта к файлам, есть возможность настроить интерпретатор
http://php.net/manual/en/ini.cor...ini.open-basedir


-----
Just do it
 
 Top
REZER
Отправлено: 05 Мая, 2015 - 19:24:48
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Окт. 2013  


Помог: 0 раз(а)




На папку стоят права 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" я не вижу, но могу в панели управления выбрать, что он будет являться владельцем файла/папки.
Прикреплено изображение (Нажмите для увеличения)
file.png
 
 Top
REZER
Отправлено: 05 Мая, 2015 - 19:26:46
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Окт. 2013  


Помог: 0 раз(а)




Вот скриншот прав на папку
Прикреплено изображение (Нажмите для увеличения)
folder.png
 
 Top
MiksIr
Отправлено: 05 Мая, 2015 - 20:08:30
Post Id


Забанен


Покинул форум
Сообщений всего: 378
Дата рег-ции: Сент. 2014  


Помог: 10 раз(а)

[+]


REZER пишет:
На деле же, пользователь или группа "apache" может его отредактировать без проблем.

А ты уверен, что PHP работает от пользователя apache? Новые файлы PHP создает с каким пользователем?


-----
self-banned
 
 Top
REZER
Отправлено: 06 Мая, 2015 - 06:58:51
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Окт. 2013  


Помог: 0 раз(а)




MiksIr пишет:
А ты уверен, что PHP работает от пользователя apache? Новые файлы PHP создает с каким пользователем?


Точно, владелец файла, созданного через PHP является "user" и группа то же "user".
Можно как-то это исправить?
 
 Top
MiksIr
Отправлено: 06 Мая, 2015 - 13:57:25
Post Id


Забанен


Покинул форум
Сообщений всего: 378
Дата рег-ции: Сент. 2014  


Помог: 10 раз(а)

[+]


На уровне ISP Manager не знаю.
По идее - завести еще одного пользователя user2 и сменить владельца существующих файлов через шел (ssh) используя root. Ну и обеспечить права чтения для этого юзера.


-----
self-banned
 
 Top
REZER
Отправлено: 11 Мая, 2015 - 09:45:39
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Окт. 2013  


Помог: 0 раз(а)




Ребят, ура!!!
Нашёл решение, всё дело в том, как и писалось в пользователе, под которым работал 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. Но такое действие нужно делать для каждого домена отдельно, если кто знает, как сделать, чтобы такое изначально прописывалось в конфиге, то сообщите пожалуйста.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Apache и другие веб-серверы »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB