Что такое модель разрешений Linux.

Введение.

 В конспекте, «Классическая модель разрешений Linux», рассмотрены основные принципы модели распределения прав операционной системы Linux, материал сопровождается примерами.

 Linux позаимствовал у Unix простую модель прав доступа к файлам, обозначив её как «Классическая модель разрешений Linux». Модель прав является гибким и относительно простым инструментом для понимания дизайна безопасности файлов и каталогов.

  • Стенд
    • Simply Linux, имя lin-sl; ip-10.0.2.14;

Классическая модель разрешений Linux.

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

Ещё одно условие при получение прав разрешения наличие — UID и GID, соответственно, для пользователя и группы. Когда пользователь входит в систему ему присваивается, вернее существует при создании учётной записи, уникальный идентификатор — UID. В дальнейшем все процессы, которые будет выполнять пользователь, система сравнивает с его UID, определяя права разрешений для доступа к файлу и каталогу. Узнать UID любого пользователя можно командой id, Пример1.

// Пример1 $ id usertest uid=500(usertest) gid=500(usertest) группы=500(usertest) $ groups usertest usertest : usertest uucp proc cdrom floppy cdwriter audio radio scanner xgrp camera vboxusers video sambashare

 При подготовке статьи использовались команды и обозначения принятые в OC Linux, Таблица 1.

Синтаксис команд
Таблица1.

 GID — группа пользователя. Как правило название GID совпадает с именем UID пользователя и является основной, Пример1. В дальнейшем пользователь может быть членом многих групп, но основная группа будет главной. Для просмотра членства в группе используется команда groups и др.

Кроме пользователей и групп создаваемых администратором, существуют системные пользователи и системные группы. Числовой диапазон UID и GID которых, как правило, начинается от 0-499. Системные пользователи и группы выполняют управление служебными программами такими как, FTP, Apache, MySQL… Пример 2;

//Пример 2 $ id root uid=0(root) gid=0(root) $ id apache uid=96(apache) gid=96(apache) группы=96(apache) $ groups root root : root bin daemon sys adm disk wheel pro

Синтаксис классической модели разрешений Linux.

 В Linux каждый файл или каталог имеет три (триада) правил для разрешений доступа к файлам и каталогам в структуре дерева папок и файлов после установки из коробки.

Теперь рассмотрим и расшифруем полное значение выходных данных файла, созданного в домашнем каталоге пользователя. Рассмотрим использования команды и оператора ‘=’, для установки прав доступа к файлу.

 Следующие примеры демонстрируют назначение, по умолчанию, прав при создании файлов и каталогов в операционной системе Linux. 

  • набор прав, по умолчанию, для файла 644
  • набор прав, по умолчанию, для каталога 755

Отключить модель разрешений можно установив восьмеричное число 777 или его буквенный аналог ugo+rwx. Это приведёт к тому — любой зарегистрированный пользователь будет иметь доступ к файлу или каталогу для чтения и редактирования.

  • Роли пользователей
    • суперпользователь, root, имеет право
      • менять разрешения доступа для любого файла или каталога запускать любую команду
    • пользователь имеет право
      • менять права доступа для файлов и каталогов в своём профиле или у других пользователей при наличии делегированных прав
      • запуск ограниченного числа программ

Модель разрешений доступа для каталога.

 Как и файлы, каталоги имеют полный набор атрибутов и флагов безопасности Пример 3. В отличие от файлов, для каталогов атрибуты и флаги имеют особое значение.

Для понимания возможности разрешений прав на каталоги рассмотрим несколько примеров лабораторной работы, следующей статьи. Теория не может показать все особенности работы с каталогами.

Использование umask.

Linux umask, контролирует права доступа для вновь создаваемых файлов определяя, наложением своей маски, какие разрешения следует отключить. Параметр umask указывается в файле /etc/profile. Структура маски идентична структуре прав доступа к файлам, Команда umask может быть представлен в двоичной, восьмеричной или символьной записи. Утилита umask позволяет установить маску во всех трех триадах.

Понимание значения маска исходит из того, что изначально при создании пользователем каталога или файла, устанавливается значение 0777 каталог, 0666 файл — любой пользователь может иметь полный доступ к каталогам и файлам системы см. Пример 2.1.

Маска устраняет этот недостаток ограничивая разрешения файла или каталога при его создании, накладывая на них свои права. В большинстве системах Linux значение маски определено следующим числовым параметром, Пример 4.

// Пример 4 $ umask 0022 // отобразить в цифровом виде $ umask -S // отобразить в виде символов u=rwx,g=rx,o=rx

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

  • Параметры маски
    • для каталога получаем ограничения 0777-0022=0755
    • для файла эти ограничения будут составлять 0666-0022=0644

 Значение маски указывается в файле /etc/profile — применяется для всей системы в целом Если требуется применить этот параметр для отдельного каталога, можно воспользоваться следующими рекомендациями, поместив выбранный набор в требуемый каталог.

Значение маски в файле profile
Пример 4a

Специальные права доступа к файлам и каталогам SUID, SGID, Sticky Bit.

 Пользователи Linux при регистрации, запускают процесс доступа к файлам и каталогам системы, используя свой UID см.выше.

Каждый каталог и файл в системе имеет триаду прав: | владелец | группа | другие. При необходимости в каждой тройке прав, бит ‘x’, при некоторых обстоятельствах, может меняться на специальный бит, который изменит параметры доступа к каталогу или файлу.

  • Синтаксис специальных атрибутов
  • SUID для владельца ‘u’ — синтаксис
    • ‘s’ — если стоял бит ‘x’
    • ‘S’ — если Не стоял бит ‘x’
    • 4  — в числовом написании
  • SGID для группы ‘g’ — синтаксист:
    • ‘s’ — если стоял бит ‘x’
    • ‘S’ — если Не стоял бит ‘x’
    • 2  — в числовом написании
  • Sticky Bit для остальных ‘o’ — синтаксис
    • ‘t’ — если стоял бит ‘x’
    • ‘T’ — если Не стоял бит ‘x’
    • 1  — в числовом написании

Термин маскировка бита соответствует тому, что перед установкой спец.бита в этой позиции уже стоит флаг ‘x’ и на него накладывается спец. бит.

 При выполнении SUID, атрибут UIDвремени выполнения- устанавливается для владельца файла, а не для пользователя, запустившего файл.

Рассмотрим использования SUID, на примере команды ping, надеюсь она хорошо всем известна и не требует пояснений. Обращение к утилите ping, должно быть доступно любому зарегистрированному пользователю системы, для этого применяют атрибут SUID. Рассмотрим пример использования команды ping на примере Ubuntu, Пример 5.

Для Simply Linux путь к команде ping: ls-l /usr/libexec/ping

 В OC Linux существует несколько десятков SUID файлов, они являются причиной многих эксплойтов — программ поиска уязвимости в ПО.

 

Файлы с SUID подвергаются строгому аудиту безопасности от захвата программами эксплойтов.

Атрибут SGID — изменяет правила наследования для новых файлов в каталоге. Файлы созданные в этом каталоге будут иметь привилегированного владельца, а не права первичной группы пользователя создавшего файл.

Подкаталоги и созданные файлы наследует SGID владельца корневого каталога, Пример 5a.

  • Пример 5a/1
    • пользователи Alex и Eustace создали файлы в каталоге dir
    • владельцем каталога dir является Alex
    • все созданные файлы имеют разные группы
  • Пример 5a/2
    • Alex установил бит ‘s‘ на каталог dir
    • Eustace создал file2 в каталоге dir 
    • file2 в каталоге dir принадлежит группе Alex

 

Файлы с SGID подвергаются строгому аудиту безопасности от захвата программами эксплойтов

 Атрибут Sticky bit — запрещает удаление файлов кем-либо кроме владельца файла, владельца каталога и пользователя root.

Работу Sticky bit можно увидеть на примере каталога /tmp находящегося в корневой структуре папок Linux. Пример 5b.

//Пример 5b
$ cd /  
$ pwd 
/  
$ ls -ld tmp  drwxrwxrwt 14 root root   tmp

Sticky bit получил свое название в ранних системах Linux, до создания виртуальной памяти с постраничной загрузкой. Если был установлен Sticky bit исполняемого файла, то после выхода из программы копия его текстового сегмента сохранялась в области подкачки системы, где хранилась для следующего использования. Эта функция использовалась для ускорения загрузки часто запускаемых программ. Теперь применяется только как защита файла от удаления другими пользователем.

Числовое значение прав.

 Все выше перечисленные примеры представлены в символьном виде, но они могут быть записаны и в числовом виде, Пример 5c.

 В некоторых случаях требуется одной командой назначит атрибуты SUID, SGID и Sticky Bit каталогам и файлам. Для этих задач созданы наборы флагов с цифровым обозначением, Таблица 2.

Таблица 2
Таблица 2

В Пример 5d демонстрируются действия синтаксиса Таблицы 2.

Заключение.

 Классическая модель разрешений Linux — является базовым знаниями управления безопасностью unix систем. Вопросы безопасности, где бы вы с ними не сталкивались, упираются в права доступа к каталогам и файлам. Если администратор не имеет возможности, времени или терпения разобраться в тонкостях и особенностях этого механизма, то постоянно будет испытывать трудности при работе в самых неожиданных случаях.

В материале не были рассмотрены примеры использования флагов: устройств (block), ссылок (link), гнезд (socket), каналов (pipe) …, т.к на практике, в основном, приходится имеет дело с каталогами и файлами.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Copyright © 2011-2024
Все права защищены.
При перепечатке указать источник: kabtim.ru
Контакты