Категории пользователей по отношению к файлу
Как и любая система, Unix-подобная операционная система GNU/Linux является многопользовательской. Это означает, что в системе могут одновременно или последовательно работать несколько пользователей, и каждый из них должен иметь свое файловое пространство с ограниченным доступом для других пользователей.
Следовательно, в Linux у каждого файла должны быть установлены особые атрибуты доступа, которые определяют права пользователей на взаимодействие с ним.
В Linux выделяются три категории пользователей, имеющих права доступа к файлам:
- Владелец файла (u – user) – это тот, кто указан в атрибутах как хозяин файла. Обычно, пользователь, создавший файл, автоматически становится его владельцем.
- Группа (g – group) – это совокупность пользователей, к которой принадлежит создатель файла. В Linux при создании нового пользователя создается одноименная группа, но системные средства позволяют формировать разные группы, объединяющие пользователей. Пользователь может одновременно принадлежать нескольким группам, что позволяет предоставлять определенный доступ ограниченному кругу лиц.
- Все остальные (o – other) – это все, кто не является владельцем и кто не относится к группе владельца. Иными словами, это сторонние пользователи.
Чтение, запись, выполнение
Основные действия, которые можно совершать с файлом, — это чтение, запись и выполнение. Каждая категория пользователей (владелец, группа, остальные) имеет отдельные права на выполнение этих операций.
Право на чтение (r – read) позволяет просматривать содержимое файла. Например, можно открыть текстовый файл для чтения. Но этого права недостаточно для внесения изменений, то есть текст и изображения остаются неизменными.
Право на запись (w – write) позволяет изменять файл, добавляя или заменяя информацию внутри него.
Право на выполнение (x – execution) актуально в основном для программных файлов, позволяя исполнять их содержащиеся в них инструкции.
Буквенная запись прав доступа
Учитывая три категории пользователей и три возможных действия, каждому файлу в Linux сопоставляются девять записей о правах, определяющих, кто и что может делать с файлом.
Первичные три записи являются правами владельца, вторичные три – правами группы, а последние три – для всех остальных пользователей. Присваивая каждому праву соответствующую букву, например, предоставив всем права, запись будет следующей:
rwxrwxrwx
Эта схема отображается в выводе команды ls -l
. После символа типа файла справа указываются
буквенные права доступа.
Если какое-либо право отсутствует, вместо буквы ставится символ минус. Например, на изображении выше файл text.txt доступен для чтения всем, однако изменять его может только владелец.
Запись прав доступа с помощью чисел
Права доступа могут выражаться не только буквами. Используя 1 для обозначения предоставленного права и 0 для его отсутствия, можно представить файл, доступный для чтения всеми, но изменять который способен только владелец:
110100100
Эта двоичная запись свойственна компьютерам, и она обозначает 9 бит информации о доступе, где каждый бит хранит либо 0, либо 1.
Чтобы сократить запись из девяти символов, применяют преобразование в восьмеричную систему счисления. Таким образом, права доступа каждой категории (владельца, группы, остальных) изображаются всего тремя цифрами от 0 до 7.
Не все возможные числа осмысленны. Например, сложно представить файл, который можно изменять, но нельзя читать. Распространенные числа: 4 – только чтение, 5 – чтение и выполнение, 6 – чтение и запись, 7 – все права.
Права доступа к каталогам
Каталог в Linux – это особый файл, содержащий список других файлов.
Права доступа к каталогам такие же, как и для файлов, однако их значение для каталогов имеет свою специфику.
Право на чтение позволяет узнавать только список файлов. Однако нельзя просматривать их свойства, такие как размер или даты изменения.
Право на исполнение дает возможность входить в каталог, просматривать и изменять файлы, если на них есть разрешение, а также узнавать их свойства.
Право на выполнение не позволяет изменять имена файлов внутри каталога, так как это влечет изменения самого списка каталога, что требует права на запись каталога.
Право на запись дает возможность изменять содержимое каталога — создавать, удалять или переименовывать файлы. Это делается даже с файлами, конкретный доступ к которым отсутствует, поэтому введен t-бит, ограничивающий операции пользователями только с их файлами.
Вытекают две особенности:
-
Доступ к файлу обеспечивается наличием права на исполнение для всех каталогов пути до него.
-
Возможно изменение файла при отсутствии права на запись в каталог, но право записи самого файла должно быть.