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
Покинул форум
Сообщений всего: 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, у них вопрос задавал, ответа нет. Сервер выделенный, то есть хостер мне не поможет.
Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011 Откуда: Одесса, Украина
Помог: 131 раз(а)
за удаление и переименование файлов отвечают права папки в которой этот файл находится - это то что касается удалить. то есть если папке поставить права r (вопрос кто владелец и кто выполняет действие) то нельзя будет писать в папке (создавать новые файлы внутри), и изменять что либо внутри (то есть переименовывать файлы или удалять их)
Покинул форум
Сообщений всего: 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" я не вижу, но могу в панели управления выбрать, что он будет являться владельцем файла/папки. Прикреплено изображение (Нажмите для увеличения)
REZER
Отправлено: 05 Мая, 2015 - 19:26:46
Новичок
Покинул форум
Сообщений всего: 7
Дата рег-ции: Окт. 2013
Помог: 0 раз(а)
Вот скриншот прав на папку Прикреплено изображение (Нажмите для увеличения)
MiksIr
Отправлено: 05 Мая, 2015 - 20:08:30
Забанен
Покинул форум
Сообщений всего: 378
Дата рег-ции: Сент. 2014
Помог: 10 раз(а)
[+]
REZER пишет:
На деле же, пользователь или группа "apache" может его отредактировать без проблем.
А ты уверен, что PHP работает от пользователя apache? Новые файлы PHP создает с каким пользователем?
----- self-banned
REZER
Отправлено: 06 Мая, 2015 - 06:58:51
Новичок
Покинул форум
Сообщений всего: 7
Дата рег-ции: Окт. 2013
Помог: 0 раз(а)
MiksIr пишет:
А ты уверен, что PHP работает от пользователя apache? Новые файлы PHP создает с каким пользователем?
Точно, владелец файла, созданного через PHP является "user" и группа то же "user".
Можно как-то это исправить?
MiksIr
Отправлено: 06 Мая, 2015 - 13:57:25
Забанен
Покинул форум
Сообщений всего: 378
Дата рег-ции: Сент. 2014
Помог: 10 раз(а)
[+]
На уровне ISP Manager не знаю.
По идее - завести еще одного пользователя user2 и сменить владельца существующих файлов через шел (ssh) используя root. Ну и обеспечить права чтения для этого юзера.
----- self-banned
REZER
Отправлено: 11 Мая, 2015 - 09:45:39
Новичок
Покинул форум
Сообщений всего: 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. Но такое действие нужно делать для каждого домена отдельно, если кто знает, как сделать, чтобы такое изначально прописывалось в конфиге, то сообщите пожалуйста.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.