Качай права

Разобрался в правах файлов в ОС Linux. Долгое время смутно представлял, что это и счем его едят и что за таинственные циферки 777, 466 и т.д и лишь издали предствалял о чем речь и зачем все это. Многое делал просто по документации к приложениям, а вот теперь сам разобрался и все так просветлело. Поскольку почти все хостятся на Linux системах, то думаю, что данная заметка будет полезна не только для линуксоидов, но и для тех, кто просто пишет сайты на PHP etc.

Итак, как мне показалось, с правами достаточно просто разобраться если запомнить простое число «3». Там все завязано на этом числе.:)

Для начала необходимо уяснить, что у файла, как и у любой земной вещи, есть законный владелец. Именно он и имеет полнейшее право управлять правами файлов и каталогов (кто в танке — каталоги тоже в своем роде всего лишь файлы, только они содержут информацию о путях, где найти другую информацию, то есть файлы). Еще кроме владельца файлов управлять правами может только «всемогущий и страшный» админ.

Следующее что необходимо уяснить в этом деле, то что по отношению в файлу есть 3 типа, или чтобы легче запомнить круга, пользователей. А именно:

  • владелец,
  • группа в которую входит владелец файла,
  • и все остальные.

Соответственно свои различные права можно назначить для все три категории.

Итоговый архиважный момент, то какие могут быть вообще эти права.

  • Чтение(read) — это самые простое право. Обозначает, что тот, кто обладает им имеет право только читать, т.е. просматривать, файл. Соответсвенно ни изменять, ни перемещать/удалять/копировать или выполнять он право не имеет. В правах каталога это дает права просматривать содержимое каталога.
  • Запись(write) — это право дает возможность записывать данные в файл. Т. е. его можно изменять, перемещать, ну и естественно читать, иначе как изменять не прочитатв :) В правах каталога дает разрешение на запись фалов в каталог.
  • Выполнять(execute) — это право дает разрешение на выполнение самого файла в сисетме, например если это программа или скрипт какой-то. В правах каталога дает право выполнять действия (копировать/пермещать/удалять) с файлами и подкаталогами.

Каждый файл содержит в себе информацио о том, кто и что может с ним делать. Теперь для наглядности пример. Допустим файл super.php имеет права rwx|r-x|r– (754 в числовом обозначении — об этом ниже). Для удобства восприятия я разделил права прямой чертой, в обозначении прав этого нет. Есть три группы по три символа (вот почему нужно права ассоциировать с «3» – мне так легче было все запомнить). Первая группа прав это набор прав для владельца, вторая — для групп в которых состоит владелец, третья — для всех остальных. Символы обозначают либо наличие права, либо его отсутствие — в это случае ставиться прочерк. Итак владелец примерного файла имеет полное право на него и чтение, и запись, и вполнение. Все кто стостоит с владельцем файла в одной группе имеют право только на чтение и исполнение файла, попытавшись изменить его они получат ответ «Permission dinied». И наконец все остальные имеют право только на чтение файла, все остально им запрещено. Следует отметить, что если кто-то случайно изменил права для собственного файла и теперь не может записывать в него, помочь сможет только «великий и могучий» админ.

Теперь про «загадочные» циферки. Это самое обычное представление прав файла только в числовом формате в восьмеричной системе. Но для начала нужно перевести буквенное обозначение в двоичную систему, а потом полученный результат в восьмеричную. Тут все просто, наличие права или же любой из знаков (r,w,x) обозначает «1», отсутствие права или же прочерк обозначает «0». Таким образом права файла super.php в числовом формате в двоичной системе записываются как 111|101|100. Как перевести это в восьмеричную систему? Не буду вдаваться в математические объяснения, это не входит в суть этого поста, просто приведу таблицу соответсвия.

Двоичная система    Восьмеричная система
000                           0
001                           1
010                           2
011                           3
100                           4
101                           5
110                           6
111                           7

Вот и все. Нехитрым способом 111101100 переводится в 754.
Надеюсь, что получилось не сильно длинно и запутанно.

В ближайшем будущем заметка по функциям управления правами файлов, как для PHP так и в общем для Linux. Не пропусти – подпишись на RSS!

________________Постовой_____________________
Хочу слетать в ОАЭ.
Девушка, будь красивее, закажи косметику в интернет-магазине косметики Фаберлик, Украина. Позволь себя побаловать!
Найди открытое и честное общение.

  1. Комментов пока нет

  1. Январь 6th, 2009

Spam Protection by WP-SpamFree

 
Бесплатный хостинг от EOMY.NET