Права доступа к файлам в Unix-подобных операционных системах (GNU/Linux)

Категории по отношению к файлам

GNU/Linux как истинная Unix-подобная операционная система является многопользовательской. Это значит, что в системе могут работать несколько (или множество) пользователей. Одновременно или по очереди — не важно. Каждый пользователь должен иметь собственное «файловое пространство», к которому доступ других пользователей может быть запрещен или ограничен. Конкретный пользователь по отношению к его собственным файлам выступает как их владелец (u - user).

С другой стороны, очевидно, что в любой системе есть программы и данные, которые должны быть доступны всем пользователям или только определенной группе пользователей. Поэтому у каждого файла есть еще и группа (g - group), к которой он принадлежит.

Файл может быть доступен абсолютно всем. Поэтому в его атрибутах должны содержаться значения, запрещающие или разрешающие доступ всем другим (o - other), кто не вошел в группу и не является владельцем.

Возможные действия над файлом

Что можно делать с файлом после его создания? В первую очередь просматривать, или читать (r - read).

Во вторую очередь, файл можно изменить (дописать, исправить, переименовать, переместить). Таким образом, мы можем говорить о возможности записи (w - write) в файл.

Если файл является программой, то его содержимое представляет собой команды для процессора, выполнение которых приводит к тому или иному желаемому (мы надеемся) эффекту. Другими словами, некоторые файлы можно исполнять (x - execution).

Указание прав доступа с помощью буквенной нотации

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

r w x r w x r w x

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

r w - r - - r - -

rwxlinux.png

 

Указание прав доступа с помощью числовой нотации

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

1 1 0 1 0 0 1 0 0

Именно с помощью нулей и единиц хранятся данные в памяти компьютера, в том числе и права доступа. Под права выделяются 9 бит в атрибутах файла, каждый бит хранит ноль или единицу.

Однако запись из девяти символов достаточно длинная. Чтобы ее сократить используют преобразование двоичных чисел в восьмеричные. Триады нулей и единиц двоичной системы как раз составляют значения от 0 до 7 в восьмеричной системе счисления.

linux755.png

 

Особенности доступа к каталогам

Каталог — это особый тип файла. Его содержание — это список других файлов.

Каталоги имеют те же «биты прав», что и остальные файлы. Однако то, что эти права означают может быть не таким простым для понимания.

Если каталог можно читать (r), то это означает, что разрешено только узнать список файлов, содержащихся в этом каталоге. Только список файлов, но не их свойства (размер, права доступа и др.).

Если каталог можно исполнять (x), то это означает, что в него можно заходить и просматривать содержимое файлов (доступ к которым разрешен для данной категории), узнавать свойства (атрибуты) файлов. Можно изменить содержимое файла (если его разрешено менять), но не имя файла.

Если каталог можно изменять (w), то это означает, что в нем можно изменять файлы, их имена, удалять их. Опасность! Это можно делать даже с файлами, доступ к которым запрещен для данной категории. Лечение! Вводят дополнительный t-бит. При его наличии пользователь может изменять только свои файлы.

Следует понимать, что ...

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

Создано