Bagaimana sistem operasi mencegah proses yang tidak memiliki hak istimewa untuk mengeksekusi instruksi istimewa?

8

Di Unix,

jika Anda adalah pengguna tamu dan melakukannya:

chmod 777 /

Itu akan gagal.

Tetapi bagaimana ini terjadi secara internal pada tingkat perangkat keras?

Sejauh ini, saya pikir inilah yang terjadi:

  • OS mencoba menjalankan instruksi itu.
  • Informasi tentang izin mungkin di suatu tempat di memori sekunder. Jadi itu akan mengeluarkan instruksi tulis.
  • Sebelum 2, Ini akan memeriksa apakah pengguna memiliki hak untuk melakukan ini. Jika tidak, itu hanya akan mengeluarkan pesan kesalahan.

Apakah ini yang terjadi, atau interupsi muncul ketika situasi seperti itu muncul? Apakah ada rutin dalam tabel ISR dalam memori utama yang sesuai dengan instruksi yang tidak privat?

pelajar
sumber

Jawaban:

10

chmodadalah operasi sistem file , bukan instruksi istimewa. Izin sistem file tidak ditangani pada tingkat perangkat keras. Perangkat lunak (khususnya OS) melihat bahwa proses menjalankan panggilan sistem tidak memiliki izin yang memadai untuk melakukan operasi pada objek sistem file dan panggilan sistem kembali dengan kesalahan izin.

Ignacio Vazquez-Abrams
sumber
5

Sebenarnya, Anda mengajukan dua pertanyaan berbeda:

  1. Bagaimana sistem operasi mencegah proses yang tidak memiliki hak istimewa untuk mengeksekusi instruksi istimewa?
  2. Mengapa proses tidakrivileg tidak dapat dilakukan chmod 777 /?

Jawaban untuk 2:

chmodsecara internal memanggil fungsi dari libc (mudah juga disebut chmod()). Fungsi ini memeriksa apakah pemanggil memiliki hak yang cukup untuk operasi - jika tidak, ia mengembalikan kesalahan EPERM.

Jawaban untuk 1 lebih menarik:

Mekanisme yang tepat tergantung pada platform OS dan perangkat keras, tetapi pada dasarnya seperti ini: Semua prosesor modern memiliki fitur keamanan bawaan. Ini memungkinkan OS untuk memberitahu prosesor: "jalankan program ini, tetapi jangan biarkan itu menjalankan instruksi istimewa ini". Jadi prosesor itu sendiri akan memberlakukan pembatasan pada instruksi yang diizinkan. Jika program mencoba mengeksekusi instruksi yang diistimewakan, prosesor akan memberikan kontrol kembali ke OS, yang biasanya akan menghentikan program yang mengalami gangguan. Untuk detailnya, lihat misalnya https://en.wikipedia.org/wiki/Ring_%28computer_security%29

sleske
sumber