[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Поговорим о правах
alex12060
Много я слышал о том, что люди не могут загрузить файлы на сервера свои, и выдается по всему интернету огромное кол-во ошибок, подобных этой:

Warning: file_put_contents(./test/file.test) [function.file-put-contents]: failed to open stream: Permission denied in /usr/local/www/apache22/data/test.ru/tests.php on line 20

Ну, как же без этого?

Ну а если расшифровать, то прозвучит это дело так: Ошибка открытия пути, доступ отклонен в ... на линии ...
Ну вот, нам нельзя писать в этот каталог. Что же делать?

А нужно грамотно расставить права.
Это не сложно, но лучше почитать внимательней.
Вообще, права делятся на 3 группы:

1. Owner (Создатель файла\папки)
2. Group user (Пользователь, который отностся к какой либо группе)
3. Other (Остальные)

Ну, по моему, 1 понятно всем. К группе Owner относитесь Вы сами и суперпользователь root.
Далее идет самая непонятная строка, это Group User.

Вообще, все сервера в большенстве своем имеют ОС *nix (FreeBSD, Ubuntu, OpenBSD) и так делее, поэтому, там, для пущей безопасности, все права разграничены группами. Допустим, Вы идете в школу, Вы крутой пасан, имеете все, что захотите и даже больше, а рядом, идут мальчики в очках, которые повторяю теорему Фалеса. И так-же в правах в группах, кто-то имеет все, кто-то ничего, или что-то.

Вот по такому принципу ставятся права, на группу. Там может присутствовать любой, все зависит от Админа. Но не будем углубляться в понимание групп.

Ну и 3, Остальные, там все, кто не является членом ни одной из групп.

Итак, теперь самое вкусное.
Вот что вам говорит эта строка?

$fileAccess = chmod(0644, $file);


Сейчас поймете. Следуйте правилу:
1. Owner (Создатель файла\папки)
2. Group user (Пользователь, который отностся к какой либо группе)
3. Other (Остальные)

Итак, а теперь о цифрах. Что вообще сделать то с файлом можно?
Его можно:

1. Прочитать
2. Редактировать
3. Выполнить

В цифровом виде это звучит так:

1. Прочитать (4)
2. Редактировать (2)
3. Выполнить (1)

Если Вы хотите выставить правило, то Вам придется пораскидывать мозгами.
Допустим, нужно сделать так:

Создатель - читает+пишет+выполняет
Группы - читают+пишут
Остальные - читают

то математически складываем:
Сначала, для создателя: 4+2+1 = 7
Для групп: 4+2 = 6
Для остальных: 4

Итак, наше правило выглядит так:
$file = chmod(0764, $file);

А теперь разберем наш прошлый пример - 0644

У создателя - 6
Групп - 4
Остальных - 4

Т.е создатель может: Читать+писать
Остальные (группа и остальные) - только читать.

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

Надеюсь, база понятна, еще можно писать буквами: rwx-r----w-
И так далее, но не в рамках этого поста) Спасибо за внимание.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.