SkillGridИзучай computer science на практике

Безопасность ОС: пользователи, права и изоляция

Почему ОС проверяет каждый запрос, почему root — крайняя мера и как процессы остаются раздельными.

14 мин · 45 XP

Каждый процесс запущен от имени какого-то пользователя, и у каждого файла есть владелец. Ядро сверяет одно с другим при каждом открытии, чтении, записи и запуске. Именно из-за этой проверки сломанная программа не может просто прочитать твои документы: она должна попросить, а ответ зависит от того, от чьего имени она работает. Права записываются тремя группами по три знака: что можно владельцу, что группе и что всем остальным.

-rw-r--r--  1 root  root   512 Jan 10 09:14 notes.txt
-rw-------  1 alice alice  512 Jan 10 09:14 diary.txt
-rwxr-xr-x  1 root  root   118 Jan 10 09:14 backup.sh

who     what they may do
------  -------------------------------------------
owner   read and write
group   read
everyone else  readЧитай девять знаков тремя группами: владелец, группа, все остальные. r — чтение, w — запись, x — запуск.
Планировщик CPU

Сначала приходит долгая задача. Посмотри, как всё за ней простаивает.

Процессы
ПроцессПриходДлительностьСостояниеИспользовано
P106ожидает—
P214ожидает—
P322ожидает—
P431ожидает—
Очередь готовых
  1. P1

P1 приходит с длительностью 6мс

Среднее время ожидания
0
Среднее время оборота
0
Общее время
0
Сравнить алгоритмы
АлгоритмСреднее время ожиданияСреднее время оборотаОбщее время
First-Come, First-Served5.58.7513
Shortest Job First47.2513
Round-Robin5.75913

Повышение привилегий — это переход с ограниченного аккаунта на более мощный. Изощрённый эксплойт для этого нужен редко: скрипт, принадлежащий root, но доступный на запись всем; сервис, работающий от root и доверяющий своим входным данным; setuid-бинарник с известной ошибкой. Мораль не в экзотических багах, а в поиске такого несоответствия: что-то более привилегированное, чем должно быть, обрабатывает что-то менее доверенное, чем должно.

Your programKernelFile on diskplease open report.txtwho asked, and may they?read the blockhere are the bytesthe program never touches the disk itself

Практика

  1. У файла режим -rw-r--r--, владелец — alice. Alice пытается в него записать. Что произойдёт?

    Подсказки
    • Иди по строке прав группой за группой: владелец, группа, все остальные.
    • Быть владельцем — не особое право, просто строка владельца проверяется первой.

    14 XP

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

    Подсказки
    • Начни с того, кто просит, и закончи тем, что программа в итоге получает.
    • Только ядро имеет право разговаривать с диском и железом.

    15 XP

  3. Сопоставь каждую меру защиты с тем, что она на самом деле ограничивает.

    Подсказки
    • Сопоставляй по тому, что мера реально ограничивает, а не по тому, как громко звучит предупреждение.
    • Короткий список безопаснее длинного, даже если с коротким неудобнее.

    15 XP