Як операційна система заважає непривілейованому процесу виконувати привілейовану інструкцію?


8

В Unix,

якщо ви гість-користувач і зробив:

chmod 777 /

Це не вдасться.

Але як це відбувається внутрішньо на апаратному рівні?

Поки що, я думаю, що це відбувається:

  • ОС намагається виконати цю інструкцію.
  • Інформація про дозволи, можливо, десь у вторинній пам'яті. Тож вона видала б інструкцію з написання.
  • До 2, він би перевірив, чи користувач має право робити це. Якщо його немає, то просто випустіть повідомлення про помилку.

Це так відбувається, чи виникає перерва, коли виникає така ситуація? Чи є у таблиці ISR у основній пам'яті рутина, що відповідає непривілейованим інструкціям?

Відповіді:


10

chmodце операція з файловою системою , а не привілейована інструкція. Права доступу до файлової системи не обробляються на апаратному рівні. Програмне забезпечення (зокрема ОС) бачить, що процес, який викликає системний виклик, не має достатніх дозволів на виконання операції над об'єктом файлової системи, і системний виклик повертається з помилкою дозволу.


5

Насправді ви задаєте два різні питання:

  1. Як операційна система заважає непривілейованому процесу виконувати привілейовану інструкцію?
  2. Чому непривілейований процес не може викликати chmod 777 /?

Відповідь за 2:

chmodвнутрішньо викликає функцію від libc (зручно її також називати chmod()). Ця функція перевіряє, чи має абонент достатньо привілеїв для операції - якщо ні, він повертає помилку EPERM.

Відповідь за 1 цікавіша:

Точний механізм залежить від ОС та апаратної платформи, але в основному це так: Усі сучасні процесори мають вбудовані функції безпеки. Це дозволяє ОС сказати процесору: "запустіть цю програму, але не дозволяйте їй виконувати ці привілейовані інструкції". Так сам процесор буде виконувати обмеження на дозволені інструкції. Якщо програма намагається виконати привілейовану інструкцію, процесор передасть керування назад в ОС, яка, як правило, припиняє непрацюючу програму. Детальніше див., Наприклад, https://en.wikipedia.org/wiki/Ring_%28computer_security%29

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.