Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Linux.docx
Скачиваний:
21
Добавлен:
24.09.2019
Размер:
74.87 Кб
Скачать
  1. Защита файлов

Как и принято в многопользовательской операционной системе, в UNIX поддерживается единообразный механизм контроля доступа к файлам и справочникам файловой системы. Любой процесс может получить доступ к некоторому файлу в том и только в том случае, если права доступа, описанные при файле, соответствуют возможностям данного процесса.

Защита файлов от несанкционированного доступа в ОС UNIX основывается на трех фактах. Во-первых, с любым процессом, создающим файл (или справочник), ассоциирован UID, который в дальнейшем можно трактовать как идентификатор владельца вновь созданного файла. Во-вторых, с каждый процессом, пытающимся получить некоторый доступ к файлу, связана пара идентификаторов - текущие идентификаторы пользователя и его группы. В-третьих, каждому файлу однозначно соответствует его описатель - i-узел.

На последнем факте стоит остановиться более подробно. Важно понимать, что имена файлов и файлы как таковые - это не одно и то же. В частности, при наличии нескольких жестких связей с одним файлом несколько имен файла реально представляют один и тот же файл и ассоциированы с одним и тем же i-узлом. Любому используемому в файловой системе i-узлу всегда однозначно соответствует один и только один файл. I-узел содержит достаточно много разнообразной информации и среди этой информации находится часть, позволяющая файловой системе оценить правомощность доступа данного процесса к данному файлу в требуемом режиме.

Общие принципы защиты одинаковы для всех существующих вариантов системы: Информация i-узла включает UID и GID текущего владельца файла. Кроме того, в i-узле файла хранится шкала, в которой отмечено, что может делать с файлом пользователь - его владелец, что могут делать с файлом пользователи, входящие в ту же группу пользователей, что и владелец, и что могут делать с файлом остальные пользователи. Мелкие детали реализации в разных вариантах системы различаются.

  1. Права доступа

Для защиты файла каждого пользователя от других пользователей в Unix-системах поддерживается механизм, известный как система прав доступа к файлам. Этот механизм позволяет каждому файлу приписать конкретного владельца, который имеет к нему полный доступ. По умолчанию другим пользователям разрешается читать ваши файлы, но запрещается изменять их или удалять.

При создании объектов файловой системы, файлов, каталогов и т. п., каждому в обязательном порядке приписывается ярлык. Ярлык включает в себя UID хозяина файла, GID, которой принадлежит файл, тип объекта и набор так называемых атрибутов, а также некоторую дополнительную информацию. Атрибуты определяют, кто и что имеет право делать с файлом.

Для каждого файла предусмотрены три вида прав доступа:

  1. чтение (read) – просмотр, исследование содержимого файлов, в случае каталогов - просмотр перечня имен файлов в каталоге;

  1. запись (write) - изменение и удаление содержимого файлов, для каталогов это дает право создавать в каталоге новые файлы и каталоги или удалять существующие;

  2. выполнение (execute) - запуск файла как программы, для каталога это означает возможность поиска файлов в этом каталоге.

Эти типы прав доступа могут быть предоставлены трем классам пользователей:

  1. владелец (user) файла;

  1. группа (group), в которую входит владелец;

  2. все, прочие (other) пользователи.

При выяснении отношений между файлом и пользователем, запустившим процесс, роль определяется так:

  1. Если UID файла совпадает с UID процесса, пользователь – хозяин файла, владелец;

  1. Если GID файла совпадает с GID любой группы, в которую входит пользователь, он – член группы, которой принадлежит файл;

  2. Если ни UID, ни GID файла не пересекаются с UID процесса и списком групп, в которые входит запустивший его пользователь, этот пользователь – посторонний.

  1. При статической схеме именования то, что ядро распознало внешнее устройство, никак не соотносится с тем, что в /dev имеется для этого устройства файл-дырка. Поскольку в любой момент в системе может появиться любое из поддерживаемых Linux устройств, в системе бывает и десять тысяч, и двадцать файлов "на всякий случай". Файл-дырка не занимает места на диске, однако использует индексный дескриптор, поэтому в корневой файловой системе, независимо от ее объема, должен быть изрядный запас индексных дескрипторов.

При динамической схеме именования применяется специальная виртуальная файловая система, которая либо полностью подменяет каталог /dev, либо располагается в другом каталоге (например, /sys), имеющем непохожую на /dev иерархическую структуру; в этом случае файлы-дырки в /dev заводит специальная служба. Этот способ гораздо удобнее и для человека, который запустил команду ls /dev, и для компьютера (в случае подключения внешних устройств, например, съемных жестких дисков, "на лету"). Однако он требует соблюдать дополнительную логику "привязки" найденного устройства к имени, иногда весьма запутанную из-за той же нечеткой идентификации.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]