Биты 8-16 – это те 9 прав, о которых шла речь выше, они и определяют права доступа (для выбранных нами трёх категорий пользователей) по три бита на каждую. Биты 8-10 задают права пользователя, биты 11-13 – права группы пользователя, биты 14-16 определяют права всех остальных пользователей (то есть всех пользователей, за исключением владельца файла и группы файла).
Если соответствующий какому-либо праву бит имеет значение «1», то предоставляется, а если он равен «0», то право не предоставляется. Точь-в-точь как субъекты получают доступ к объектам в таблице 1. [6]
В символьной форме записи прав для отображения пользователю единица заменяется соответствующим символом (r, w или х, от read, write, execute), а 0 представляется прочерком (-).
Право на чтение «r» файла означает, что пользователь (или процесс, запущенный пользователем) может считывать содержимое файла. Право на запись «w» означает возможность записи в этот файл. Право на выполнение «х» означает, что файл может быть запущен как исполняемая программа. Конечно, если в действительности файл не является программой (или скриптом), то запустить этот файл на выполнение и получить полезный результат вряд ли удастся, но, с другой стороны, даже если файл действительно является программой, а право на выполнение для него не установлено, то он тоже «не запустится».
По отношению к каталогам трактовка понятия «право на выполнение» несколько изменяется (естественно, ведь «выполнение» каталога бессмысленно). Оно в случае означает право переходить в этот каталог. Если вы как владелец хотите дать доступ другим пользователям на просмотр какого-то файла в своём каталоге, вы должны дать им право доступа в каталог, то есть дать им «право на выполнение каталога». Более того, надо дать пользователю право на выполнение для всех каталогов, стоящих в дереве выше данного каталога. Поэтому, в принципе, для всех каталогов по умолчанию устанавливается право на выполнение как для владельца и группы, так и для всех остальных пользователей. Если предоставить право на выполнение, но не предоставлять право на чтение каталога, то пользователь сможет войти в каталог и обратиться к файлу, находящемуся в этом каталоге, но только в том случае, если он знает точное этого файла. При отсутствии права на чтение каталога просмотр содержимого невозможен. Использование данного факта как элемента защиты возможно, но не является надёжным.
Алгоритм проверки прав пользователя при обращении к файлу можно описать следующим образом. Система вначале проверяет, совпадает ли имя пользователя с именем владельца файла. Если эти имена совпадают, то есть владелец обращается к своему файлу, то проверяется, имеет ли владелец соответствующее право доступа: на чтение, на запись или на выполнение (суперпользователь может лишить некоторых прав и владельца файла).
Если право такое есть, то соответствующая операция разрешается. Если же нужного права владелец не имеет, то проверка прав, предоставляемых через группу или через группу атрибутов доступа для остальных пользователей, уже даже не проверяется, а пользователю выдаётся сообщение о невозможности выполнения затребованного действия.
Если имя пользователя, обращающегося к файлу, не совпадает с именем владельца то система проверяет, принадлежит ли владелец к группе, которая сопоставлена данному файлу (группой файла). Если принадлежит, то для определения возможности доступа к файлу используются атрибуты, относящиеся к группе, а на атрибуты для «владельца» и «всех остальных пользователей» внимание не обращается. Если же пользователь не является владельцем файла и не входит в группу файла, то его права определяются атрибутами для остальных пользователей. Таким образом, третья группа атрибутов, определяющих права доступа к файлу, относится ко всем пользователям, кроме владельца файла и пользователей, входящих в группу файла.
Три бита (5-7, таблица 2) интерпретируются следующим образом. Первый из этих атрибутов (бит 5) – так называемый «бит смены идентификатора пользователя(владельца)» (Set User ID, SetUID, SUID, suid). Смысл этого бита состоит в следующем: обычно, когда пользователь запускает некоторую программу на выполнение, эта программа получает те же права доступа к файлам и каталогам, которые имеет пользователь, запустивший программу. Если же установлен «бит смены идентификатора пользователя», то программа получит права доступа к файлам и каталогам, которые имеет владелец файла программы.
Это позволяет решать некоторые задачи, которые иначе было бы трудно выполнить. Самый характерный пример, рассмотренный выше без упоминания деталей – команда смены пароля passwd. Вся информация о паролях пользователей хранится в файле /etc/shadow (реже в /etc/passwd), владельцем которого является суперпользователь. Поэтому программы, запущенные обычными пользователями, в том числе команда passwd, не могут производить запись в этот файл. А значит, пользователь не может менять свой собственный пароль. Но для файла /usr/bin/passwd установлен «бит смены идентификатора владельца», каковым является суперпользователь. Следовательно, программа смены пароля запускается с правами суперпользователя (так как он владелец файла и на файле стоит атрибут SetUID) и получает право записи в файл /etc/shadow.
Следующий атрибут (бит 6, таблица 2) – «бит смены идентификатора группы пользователя» (Set Group ID, SetGID, SGID, sgid) – аналогичен атрибуту SUID, но относится к группе владельца файла, а не к самому владельцу.
И наконец, третий атрибут (бит 7, таблица 2) – это «бит сохранения задачи», или «sticky bit» (дословно – «липкий бит»). Этот бит указывает системе, что после завершения программы надо сохранить её код в оперативной памяти. Этот атрибут был необходим на старых моделях компьютеров с малым быстродействием жёстких дисков и малым объёмом оперативной памяти. В современных системах с быстрыми дисками и объёмами памяти, исчисляемыми терабайтами, данный бит потерял какой-либо практический смысл и часто просто игнорируется.
По отношению к директориям указанный бит (бит 7) меняет другие свойства. Например, его можно использовать в отношении общих разделяемых каталогов (/tmp и др.). Действует он следующим образом. Если предоставить всем полные права на доступ к какому-либо каталогу, то любой пользователь сможет записывать и удалять любые файлы в этом каталоге, вне зависимости от их владельцев. Если же установить «sticky bit», то пользователь сможет удалять только те файлы, владельцем которых он является. Таким образом, программы, запущенные от одного пользователя, могут создавать свои временные файлы в директории /tmp без боязни того, что эти файлы будут стёрты другими пользователями или их программами.
Общие файлы в таких директориях могут использоваться для обеспечения информационных потоков между различными процессами, поэтому данный факт должен учитываться администратором при реализации разграничения доступа в конкретных условиях.
Контроль доступа к данным
- Леонид Федотов
- Информатика
Диплом777
Email: info@diplom777.ru
Phone: +7 (800) 707-84-52
Url: https://diplom777.ru/
Никольская 10
Москва, RU 109012
Содержание
Леонид Федотов
Окончил НИУ ВШЭ факультет компьютерных наук. Сам являюсь кандидатом наук. По специальности работаю 13 лет, за это время создал 8 научных статей и 2 диссертации. В компании подрабатываю в свободное от работы время уже более 5 лет. Нравится помогать школьникам и студентам в решении контрольных работ и написании курсовых проектов. Люблю свою профессию за то, что это направление с каждым годом становится все более востребованным и актуальным.