Безопасность ОС: пользователи, права и изоляция
Почему ОС проверяет каждый запрос, почему root — крайняя мера и как процессы остаются раздельными.
Каждый процесс запущен от имени какого-то пользователя, и у каждого файла есть владелец. Ядро сверяет одно с другим при каждом открытии, чтении, записи и запуске. Именно из-за этой проверки сломанная программа не может просто прочитать твои документы: она должна попросить, а ответ зависит от того, от чьего имени она работает. Права записываются тремя группами по три знака: что можно владельцу, что группе и что всем остальным.
-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 — запуск.Сначала приходит долгая задача. Посмотри, как всё за ней простаивает.
| Процесс | Приход | Длительность | Состояние | Использовано |
|---|---|---|---|---|
| P1 | 0 | 6 | ожидает | — |
| P2 | 1 | 4 | ожидает | — |
| P3 | 2 | 2 | ожидает | — |
| P4 | 3 | 1 | ожидает | — |
- P1
P1 приходит с длительностью 6мс
- Среднее время ожидания
- 0
- Среднее время оборота
- 0
- Общее время
- 0
| Алгоритм | Среднее время ожидания | Среднее время оборота | Общее время |
|---|---|---|---|
| First-Come, First-Served | 5.5 | 8.75 | 13 |
| Shortest Job First | 4 | 7.25 | 13 |
| Round-Robin | 5.75 | 9 | 13 |
Повышение привилегий — это переход с ограниченного аккаунта на более мощный. Изощрённый эксплойт для этого нужен редко: скрипт, принадлежащий root, но доступный на запись всем; сервис, работающий от root и доверяющий своим входным данным; setuid-бинарник с известной ошибкой. Мораль не в экзотических багах, а в поиске такого несоответствия: что-то более привилегированное, чем должно быть, обрабатывает что-то менее доверенное, чем должно.
Практика
У файла режим -rw-r--r--, владелец — alice. Alice пытается в него записать. Что произойдёт?
Подсказки
- Иди по строке прав группой за группой: владелец, группа, все остальные.
- Быть владельцем — не особое право, просто строка владельца проверяется первой.
14 XP
Расставь по порядку шаги чтения файла обычной программой, которой доступ разрешён.
Подсказки
- Начни с того, кто просит, и закончи тем, что программа в итоге получает.
- Только ядро имеет право разговаривать с диском и железом.
15 XP
Сопоставь каждую меру защиты с тем, что она на самом деле ограничивает.
Подсказки
- Сопоставляй по тому, что мера реально ограничивает, а не по тому, как громко звучит предупреждение.
- Короткий список безопаснее длинного, даже если с коротким неудобнее.
15 XP