Права зверя на чужой файл на хостинге

Права зверя на чужой файл на хостинге

Этот пост является не столько продолжением, сколько уточнением статьи про права доступа к файлам на хостинге. Рекомендую сперва вернуться к этой статье и освежить в памяти информацию о правах доступа и о владельцах файлов. Заодно, это отфильтрует от данного поста "пионеров", которые не используют полноценные хостинги.


В той статье давалось решение проблемы с "завладением" теми файлами, которые были созданы не пользователем хостинга, а скриптами, работающими на хостинге. В частности речь шла о файлах, владельцем которых является Apache. Причем, там речь шла не об исполняемом файле, а о таким файле, который редактируется скриптом, написанном на PHP.


Напоминаю, что там давался такой рецепт редактирования файлов, созданных апачем. Сначала копируем апачевский файл себе в компьютер и редактируем его. Затем сносим старый файл на хостинге. Потом копируем отредактированный файл на хостинг. И, наконец, ставим этому файлу права доступа 777, чтобы скрипт мог продолжать корректно работать с этим файлом.


На самом деле права 777 для файла не есть хорошо с точки зрения хостера. Они считают, что такие права доступа на файл создают уязвимости в безопасности Вашего сайта. Поэтому служба поддержки хостинга обычно рекомендует в таких случаях ставить права доступа 755.


Но это принципиально неверно, так как циферка 5 означает, что даются только права чтения и исполнения. А так как эти пятерки стоят на втором и на третьем месте, то именно такие права даются не владельцу файла, а группе и всем остальным. Но владельцем файла стали именно Вы. Поэтому тот же Apache не сможет ничего записать в этот файл. Поэтому права 755 хороши только для исполняемых файлов, но никак не подходят для файлов, в которые скрипты пишут информацию.


Стандартные права доступа на все те файлы, которые Вы копируете на хостинг со своего компьютера, по умолчанию устанавливаются как 644. То есть "чужакам" можно их только читать. Именно в этом причина того, что теперь скрипт не может в этот файл ничего записывать. Причем скрипту не нужно исполнять этот файл. Скрипту достаточно этот файл только читать и редактировать его.


Получается, что для скрипта достаточно будет только циферки 6, а не 7. А цифр с 1 до 5 на втором и третьем месте явно недостаточно.


Поэтому такому перезаписанному файлу, владельцем которого стал пользователь, можно вместо прав 644 присвоить права 666, а не 777. Первую циферку 6 мы не меняем и оставляем как есть, а для группы и всех остальных меняем 4 на 6.


Возможно, одна из этих шестерок тоже лишняя. Возможно, вместо 666 можно поставить права доступа 646 или 664. Но, честно говоря, я не разобрался, является ли Apache "всем остальным" по отношению к пользователю хостинга или апач входит в группу пользователя.


Я не на столько хорошо разбираюсь в работе хостингов. Поэтому не могу сказать, кем приходится Apache пользователю.


Можно, конечно, еще и провести эксперимент на своем хостинге с правами 664 и 646, и посмотреть, что получится. Но я думаю, что мне делать такие эксперименты бессмысленно. Дело в том, что я не разбираюсь в таких вопросах, как, например, а может ли на одних хостингах апач быть в группе, а на других хостингах относиться ко всем остальным. И тем более, я не разбираюсь в том, может ли на одном и том же хостинге, и даже на одном и том же сайте с разными скриптами, этот апач быть и в группе и вне группы в зависимости от скрипта.


Поэтому в этом посте приводится универсальное решение. Ставьте права доступа 666 на все те файлы, которые должен создать скрипт и писать в него информацию, после того, как Вы перепишите этот файл.




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

Автор статьи: Евгений Миронов.


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

Вы дочитали статью до конца? Если да, то Вы молодец!
Эта статья может Вам ещё пригодиться (или весь этот сайт).
Быстро и удобно можно сохранить ссылку на эту статью через эти кнопочки социальных сетей.

Сохрани ссылку на эту статью в своей любимой социальной сети!

Комментарии к этой заметке больше не принимаются.




сентябрь 2014
пн вт ср чт пт сб вс
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30