- •Структура операционной системы Linux
- •Дистрибутивы Linux
- •Разновидности файлов
- •Монтирование файловых систем
- •Основные каталоги:
- •Основные понятия безопасности системы Linux
- •Защита файлов
- •Права доступа
- •Способы включения драйвера устройства в ос
- •Традиционно, Unix разделяет все устройства на три основных типа: символьные, блочные и сетевые устройства.
- •Ввод и вывод
Защита файлов
Как и принято в многопользовательской операционной системе, в UNIX поддерживается единообразный механизм контроля доступа к файлам и справочникам файловой системы. Любой процесс может получить доступ к некоторому файлу в том и только в том случае, если права доступа, описанные при файле, соответствуют возможностям данного процесса.
Защита файлов от несанкционированного доступа в ОС UNIX основывается на трех фактах. Во-первых, с любым процессом, создающим файл (или справочник), ассоциирован UID, который в дальнейшем можно трактовать как идентификатор владельца вновь созданного файла. Во-вторых, с каждый процессом, пытающимся получить некоторый доступ к файлу, связана пара идентификаторов - текущие идентификаторы пользователя и его группы. В-третьих, каждому файлу однозначно соответствует его описатель - i-узел.
На последнем факте стоит остановиться более подробно. Важно понимать, что имена файлов и файлы как таковые - это не одно и то же. В частности, при наличии нескольких жестких связей с одним файлом несколько имен файла реально представляют один и тот же файл и ассоциированы с одним и тем же i-узлом. Любому используемому в файловой системе i-узлу всегда однозначно соответствует один и только один файл. I-узел содержит достаточно много разнообразной информации и среди этой информации находится часть, позволяющая файловой системе оценить правомощность доступа данного процесса к данному файлу в требуемом режиме.
Общие принципы защиты одинаковы для всех существующих вариантов системы: Информация i-узла включает UID и GID текущего владельца файла. Кроме того, в i-узле файла хранится шкала, в которой отмечено, что может делать с файлом пользователь - его владелец, что могут делать с файлом пользователи, входящие в ту же группу пользователей, что и владелец, и что могут делать с файлом остальные пользователи. Мелкие детали реализации в разных вариантах системы различаются.
Права доступа
Для защиты файла каждого пользователя от других пользователей в Unix-системах поддерживается механизм, известный как система прав доступа к файлам. Этот механизм позволяет каждому файлу приписать конкретного владельца, который имеет к нему полный доступ. По умолчанию другим пользователям разрешается читать ваши файлы, но запрещается изменять их или удалять.
При создании объектов файловой системы, файлов, каталогов и т. п., каждому в обязательном порядке приписывается ярлык. Ярлык включает в себя UID хозяина файла, GID, которой принадлежит файл, тип объекта и набор так называемых атрибутов, а также некоторую дополнительную информацию. Атрибуты определяют, кто и что имеет право делать с файлом.
Для каждого файла предусмотрены три вида прав доступа:
чтение (read) – просмотр, исследование содержимого файлов, в случае каталогов - просмотр перечня имен файлов в каталоге;
запись (write) - изменение и удаление содержимого файлов, для каталогов это дает право создавать в каталоге новые файлы и каталоги или удалять существующие;
выполнение (execute) - запуск файла как программы, для каталога это означает возможность поиска файлов в этом каталоге.
Эти типы прав доступа могут быть предоставлены трем классам пользователей:
владелец (user) файла;
группа (group), в которую входит владелец;
все, прочие (other) пользователи.
При выяснении отношений между файлом и пользователем, запустившим процесс, роль определяется так:
Если UID файла совпадает с UID процесса, пользователь – хозяин файла, владелец;
Если GID файла совпадает с GID любой группы, в которую входит пользователь, он – член группы, которой принадлежит файл;
Если ни UID, ни GID файла не пересекаются с UID процесса и списком групп, в которые входит запустивший его пользователь, этот пользователь – посторонний.
При статической схеме именования то, что ядро распознало внешнее устройство, никак не соотносится с тем, что в /dev имеется для этого устройства файл-дырка. Поскольку в любой момент в системе может появиться любое из поддерживаемых Linux устройств, в системе бывает и десять тысяч, и двадцать файлов "на всякий случай". Файл-дырка не занимает места на диске, однако использует индексный дескриптор, поэтому в корневой файловой системе, независимо от ее объема, должен быть изрядный запас индексных дескрипторов.
При динамической схеме именования применяется специальная виртуальная файловая система, которая либо полностью подменяет каталог /dev, либо располагается в другом каталоге (например, /sys), имеющем непохожую на /dev иерархическую структуру; в этом случае файлы-дырки в /dev заводит специальная служба. Этот способ гораздо удобнее и для человека, который запустил команду ls /dev, и для компьютера (в случае подключения внешних устройств, например, съемных жестких дисков, "на лету"). Однако он требует соблюдать дополнительную логику "привязки" найденного устройства к имени, иногда весьма запутанную из-за той же нечеткой идентификации.