Права доступа к файлам
Одной из важнейших составляющих безопасности сайта явлются правильные права доступа к файлам. Думаю, что многие из Вас видели подобные права, например, "777", "755", "444" и другие. Иногда перед ними идёт ещё ведущий "0", но в этой статье мы его опустим. Вот что они означают и как составляются, а также как правильно их использовать, я попытаюсь объяснить в сегодняшней статье.
Права доступа к файлам определяются 3-мя составляющими: разрешение на чтение, на запись и на выполнение. Также существует три группы пользователей: владелец файла, группа, к которой принадлежит владелец, и все другие пользователи. Вот на основании 3-х составляющих прав и групп пользователей и строятся эти числа, обозначающие права доступа к файлам.
Продолжим. Права состоят из трёх цифр. Первая цифра отвечает за права владельца файла, вторая цифра - за группу владельца, а третья цифра - за права других пользователей.
Далее. Каждая цифра отвечает за количество прав. Считается она следующим образом: за права чтения даётся 4, за право записи даётся ещё 2, за выполнение ещё 1. Получается, что максимально возможные права - это 4+2+1=7 (чтение+запись+выполнение). Если группа может читать и выполнять файл, но не может записывать, то права будут 4+1=5 (чтение+выполнение).
Чтобы стало ещё понятнее, возьмём пример: права "754", и подробно разберём их:
- 7 - владелец файла может читать (4), записывать (2) и выполнять (1) файл.
- 5 - группа владельца может читать (4) и выполнять (1) файл.
- 4 - все остальные пользователи могут только читать (4) файл.
Многие могут спросить: "А что же с каталогами?". Каталоги - это те же файлы, поэтому на них распространяются те же правила.
Теперь о том, как нужно выставлять права доступа к файлам на Вашем сайте:
- На все файлы поставить права "644".
- На все директории поставить права "755".
- На особо важные файлы (как правило, это файл config.php, в котором содержатся пароли от базы данных) необходимо поставить права "444".
- На все директории, в которые пользователь может загружать файлы, надо ставить права 777. Например, это папка с аватарками.
И последний момент, который хотелось бы осветить - это права в системе Windows. Самое главное - это понять, что в Windows нет никаких прав доступа вообще. Они относятся только к Unix-системам. Поэтому бесполезно на каком-нибудь Denwer узнавать, какие права доступа к файлам у Вас стоят.
В этой статье мы с Вами разобрали, как составляются права доступа, а также Вы теперь знаете, какие права надо ставить у себя на сайте. А в следующей статье я разберу, как можно работать с правами доступа к файлам через функции PHP.
-
- Михаил Русаков
Комментарии (9):
Как дать права доступа файлу?
Ответить
Либо через FTP-клиент (например, Filezilla), либо через PHP, о чём я напишу в следующей статье.
Ответить
А что если файлзила пишет "644", а fileperms возвращает "33188"?
Ответить
Какая ОС?
Ответить
FreeBSD amd64
Ответить
Функция fileperms() возвращает 10-е число. А права доступа записываются в 8-й системе. Если 33188 перевести из 10-й в 8-ю систему, то получится 100 644. Вот как раз последние цифры и свидетельствуют о правах доступа. Если надо, чтобы функция fileperms() сразу возвращала 8-е число (с ведущим нулём), то надо использовать такой код: echo substr(sprintf('%o', fileperms("myfile.txt")), -4);
Ответить
ну спасибо! О sprintf() раньше не знал. Тогда и задавать права функцией chmode() тоже придется с помощью восьмеричного числа... Не очень удобно как-то(
Ответить
Получается ставить вот так: 0754? (владелец может читать, выполнять, записывать файл. Группа владельца может читать, выполнять файл. Пользователь может только читать файл)
Ответить
Да всё так, даже ноль в начале можно опустить и будет просто 754
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.