Права доступа к файлу. Изменение прав доступа. rwx. chmod().

Бывают причины по которым нам надо чтобы у файла были другие права чем даются ему по умолчанию сервером. Это актуально для unix — хостингов. Ну например такой случай, мы сделали скрипт, который закачивает картинки на сервер, которые в свою очередь должны отображаться на сайте в каком-то месте (не суть важно в каком), короче они не отображаются хотя всё коректно указано (путь в теге и т.д.). В чем же проблема??? Она в следующем… У закаченного файла не выставлены права на просмотр для посторонних. Как это исправить??? Логично что права не плохо бы поменять… Можно залезть через FTP и в свойствах файла поменять права.. Для одного файла можно сделать и так, но мы то так делать не будем, мы же лентяи! или нет? Лично я бы поленился каждый раз так делать. Я уже слышу Ваш голос: «Давай ближе к делу». Оке.

Права на файл в PHP меняются так:

$filepath=»C:/www/htdocs/foto/primer.jpg»; //Пуьт к файлу вместе с указанием имени файла

chmod($filepath,0777);

Что такое 0777 спросите вы, на самом деле что такое 0 — я и сам не знаю, а вот 777 — это счастливое число.

777 — символизирует максимальные права доступа у файла в системе UNIX. 777 — это rwx-rwx-rwx

r — чтение
w — запись
x — запуск на исполнение

Почему rwx повторяется 3 раза: rwx rwx rwx

1раз — rwx — для администратора системы

2 раз — rwx — для пользователей групп, назначенных администратором

3 раз — rwx — для всех

Бывает что не всегда rwxrwxrwx, может быть так: rwx rw- r-x там где стоит знак «-» действие запрещено, т.е. полуется, что администратор имеет права на чтение, запись и выполнение, пользователи групп на чтение и запись, а все остальные только на чтение и выполнение.

Вырнемся немного назад, причем тут 777??? Дело в том что «7» в двоичной системе представляет собой «111», т.е. такое соответствие:

rwx — это 111 или 7

rw- — это 110 или 6

r-x — это 101 или 5

r— — это 100 или 4

-wx -это 011 или 3

-w- — это 010 или 2

—x — это 001 или 1

— — это 000 или 0

Подведем итог, как этим пользоваться. Например мы решили задать права к файлу чтобы, читать его могли админ, группы и все пользователи, записывать в него только админ и группы, а выполнять только админ, получается «rwx rw- r—» представим в двоичном виде «111 110 100» переведем в десятичны вид 7 6 5, значит надо писать так:

chmod($filepath,0765);

Зачем нужен «0» — не знаю…

Share