Права файла настройка php

PHP :: Определение прав доступа к файлам и папкам

При размещении файлов сайта на веб-сервере Unix разработчик сталкивается с необходимостью определения прав доступа для каждого отдельного файла или каталога. Права доступа определяют кто и что может делать с данным файлом или каталогом. Существуют три основных вида прав доступа:

  • чтение содержимого файла или просмотр перечня имен файлов в каталоге;
  • запись файла или создание и удаление файлов из каталога;
  • запуск файлов (например, скриптов) или доступ к файлам в каталоге.

Все перечисленные виды прав назначаются одной из трех групп пользователей (отношение пользователей к той или иной группе определяется сервером в момент их подключения к нему):

  • user (владелец файла) – это пользователь, который создает данный файл или папку, и затем подключается к серверу, например, по протоколу FTP под своим именем и паролем;
  • group (группа, к которой принадлежит владелец файла) – это другие пользователи, которые также подключаются к серверу по протоколу FTP и пытаются получить доступ к файлам или каталогам непосредственного владельца;
  • other (все остальные пользователи) – это все посетители сайта, которые заходят на него через свой браузер.

Сами права доступа обозначаются либо при помощи букв r (чтение), w (запись), x (исполнение) в формате ixxxyyyzzz , либо при помощи трехзначного числа в восьмеричной системе счисления (цифры от 0 до 7 ) в формате 0nnn . Первая группа букв или цифра устанавливают права для владельца файла, вторая – для группы, а третья – для всех остальных. Что касается первой буквы в символьном формате, то она указывает на то, что права доступа назначаются либо директории, тогда ставится буква d , либо обычному файлу, тогда ставится дефис — . Если вместо буквы указан дефис, то данный вид прав для соответствующей группы отсутствует. Например, файл с правами доступа -rwxrwxrwx или 0777 могут читать, записывать и запускать все группы пользователей, а вот директорию с правами доступа drwxr—r— или 0744 может просматривать, удалять и создавать в ней файлы, а также получать доступ к файлам только владелец. Остальным группам разрешается лишь просмотр каталога. Реальный пример отображения прав доступа к файлам на хостинге показан на рис. №1 .

Рис. №1. Пример отображения прав доступа на сервере

Нас будет интересовать числовой формат определения прав доступа к файлам и каталогам, расшифровка цифр которого представлена в таблице №2 .

Числовой формат Символьный формат Права доступа
0 Права отсутствуют
1 —x Только выполнение
2 -w- Только запись
3 -wx Запись и выполнение
4 r— Только чтение
5 r-x Чтение и выполнение
6 rw- Чтение и запись
7 rwx Чтение, запись, выполнение
Читайте также:  Название документа

Таблица №2. Таблица прав доступа в цифровом формате

Теперь, когда мы получили некоторое представление о правах доступа к файлам и каталогам, продемонстрируем определение прав доступа к файлу на примере №3 .


'; //fileperms()- возвращает информацию о правах доступа в виде 10-го //числа (или false). После перевода в восьмеричное число, последние //4 цифры будут содержать сведения о правах доступа, а также //(на большинстве платформ) инф-цию о типе файла. Например, для файла //test_2.php на рис. 9.1 получим 33188 или в 8-й 100644 echo substr(decoct(fileperms('test_2.php')), -4); //Выведет 0644 echo '

'; echo '-------- chmod() --------

'; //chmod() - изменяет режим доступа к файлу и возвращает true|false chmod('test_2.php', 0777); //Разрешили всем все права chmod('test_2.php', 0744); //Владельцу все, остальным только чтение chmod('test_2.php', 0755); //Владельцу все, остальным чтение и запись ?>

Также обратите внимание на функции chown() , chgrp() , umask() . Все они находятся в «Функции для работы с файловой системой» -> «Файловая система» .

Быстрый переход к другим страницам

html.okpython.net Copyright © 2016-2023.

Источник

Права доступа к файлам

Права доступа к файлам

Одной из важнейших составляющих безопасности сайта явлются правильные права доступа к файлам. Думаю, что многие из Вас видели подобные права, например, «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. Например, это папка с аватарками.
Читайте также:  Php header status codes

И последний момент, который хотелось бы осветить — это права в системе Windows. Самое главное — это понять, что в Windows нет никаких прав доступа вообще. Они относятся только к Unix-системам. Поэтому бесполезно на каком-нибудь Denwer узнавать, какие права доступа к файлам у Вас стоят.

В этой статье мы с Вами разобрали, как составляются права доступа, а также Вы теперь знаете, какие права надо ставить у себя на сайте. А в следующей статье я разберу, как можно работать с правами доступа к файлам через функции PHP.

Создано 25.06.2011 14:26:48

  • Михаил Русаков
  • Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

    Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
    Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

    Если Вы не хотите пропустить новые материалы на сайте,
    то Вы можете подписаться на обновления: Подписаться на обновления

    Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

    Порекомендуйте эту статью друзьям:

    Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

    1. Кнопка:
      Она выглядит вот так:
    2. Текстовая ссылка:
      Она выглядит вот так: Как создать свой сайт
    3. BB-код ссылки для форумов (например, можете поставить её в подписи):

    Комментарии ( 9 ):

    Как дать права доступа файлу?

    Либо через FTP-клиент (например, Filezilla), либо через PHP, о чём я напишу в следующей статье.

    А что если файлзила пишет «644», а fileperms возвращает «33188»?

    Функция fileperms() возвращает 10-е число. А права доступа записываются в 8-й системе. Если 33188 перевести из 10-й в 8-ю систему, то получится 100 644. Вот как раз последние цифры и свидетельствуют о правах доступа. Если надо, чтобы функция fileperms() сразу возвращала 8-е число (с ведущим нулём), то надо использовать такой код: echo substr(sprintf(‘%o’, fileperms(«myfile.txt»)), -4);

    ну спасибо! О sprintf() раньше не знал. Тогда и задавать права функцией chmode() тоже придется с помощью восьмеричного числа. Не очень удобно как-то(

    Получается ставить вот так: 0754? (владелец может читать, выполнять, записывать файл. Группа владельца может читать, выполнять файл. Пользователь может только читать файл)

    Читайте также:  Directive register long arrays is deprecated in php

    Да всё так, даже ноль в начале можно опустить и будет просто 754

    Для добавления комментариев надо войти в систему.
    Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

    Copyright © 2010-2023 Русаков Михаил Юрьевич. Все права защищены.

    Источник

    chmod

    Осуществляет попытку изменения режима доступа указанного файла на режим, переданный в параметре mode .

    Список параметров

    Обратите внимание, что значение параметра mode не переводится автоматически в восьмеричную систему счисления, поэтому, чтобы удостовериться в том, что режим был установлен верно, предваряйте нулем (0) значение передаваемое в параметре mode . Строки, такие как «g+w», не будут работать должным образом.

    chmod ( «/somedir/somefile» , 755 ); // десятичное, скорее всего, указано неверно
    chmod ( «/somedir/somefile» , «u+rwx,go+rx» ); // строка, неверный способ
    chmod ( «/somedir/somefile» , 0755 ); // восьмеричное, верный способ
    ?>

    Значение параметра mode состоит из трех восьмеричных чисел, определяющих уровень доступа для владельца файла, для группы, в которую входит владелец, и для других пользователей, соответственно. Число, определяющее уровень пользователя, может быть вычислено путем суммирования значений, определяющих права: 1 — доступ на выполнение, 2 — доступ на запись, 4 — доступ на чтение. Сложите эти числа для указания нужного права доступа. Более подробно о системе прав в системах Unix вы можете узнать с помощью команд ‘man 1 chmod‘ и ‘man 2 chmod‘.

    // Доступ на запись и чтение для владельца, нет доступа для других
    chmod ( «/somedir/somefile» , 0600 );

    // Доступ на запись и чтение для владельца, доступ на чтение для других
    chmod ( «/somedir/somefile» , 0644 );

    // Полный доступ для владельца, доступ на чтение и выполнение для других
    chmod ( «/somedir/somefile» , 0755 );

    // Полный доступ для владельца, доступ на чтение и выполнение для группы владельца
    chmod ( «/somedir/somefile» , 0750 );
    ?>

    Возвращаемые значения

    Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

    Примечания

    Замечание:

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

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

    Замечание:

    При включенном безопасный режим PHP проверяет имеет ли файл или директория, с которой вы работаете, такой же UID (id владельца), как и выполняемый скрипт. Кроме того, вы не можете устанавливать SUID, SGID и «липкие» (sticky) биты.

    Смотрите также

    • chown() — Изменяет владельца файла
    • chgrp() — Изменяет группу владельцев файла
    • fileperms() — Возвращает информацию о правах на файл
    • stat() — Возвращает информацию о файле

    Источник

    Оцените статью