In che modo un sistema operativo impedisce a un processo senza privilegi di eseguire un'istruzione privilegiata?


8

In Unix,

se sei un utente ospite e hai fatto:

chmod 777 /

Fallirebbe.

Ma come può accadere internamente a livello hardware?

Finora, penso che sia quello che succede:

  • Il sistema operativo tenta di eseguire tale istruzione.
  • Le informazioni sulle autorizzazioni sono forse da qualche parte nella memoria secondaria. Quindi emetterebbe un'istruzione di scrittura.
  • Prima di 2, verificherebbe se l'utente ha il privilegio di farlo. Se non lo è, emetterebbe solo un messaggio di errore.

È così che succede o viene sollevato un interrupt quando si presenta una situazione del genere? Esiste una routine nella tabella ISR nella memoria principale corrispondente alle istruzioni non privilegiate?

Risposte:


10

chmodè un'operazione di filesystem , non un'istruzione privilegiata. Le autorizzazioni del filesystem non sono gestite a livello hardware. Il software (in particolare il sistema operativo) rileva che il processo che richiama la chiamata di sistema non dispone di autorizzazioni sufficienti per eseguire l'operazione sull'oggetto filesystem e la chiamata di sistema ritorna con un errore di autorizzazione.


5

In realtà, stai ponendo due diverse domande:

  1. In che modo un sistema operativo impedisce a un processo senza privilegi di eseguire un'istruzione privilegiata?
  2. Perché un processo senza privilegi non può invocare chmod 777 /?

Risposta per 2:

chmodinvoca internamente una funzione dal libc (convenientemente chiamato anche chmod()). Questa funzione verifica se il chiamante dispone di privilegi sufficienti per l'operazione, altrimenti restituisce un errore EPERM.

La risposta per 1 è più interessante:

L'esatto meccanismo dipende dal sistema operativo e dalla piattaforma hardware, ma fondamentalmente è così: tutti i processori moderni hanno funzionalità di sicurezza integrate. Ciò consente al sistema operativo di dire al processore: "eseguire questo programma, ma non lasciare che esegua queste istruzioni privilegiate". Quindi il processore stesso imporrà la limitazione sulle istruzioni consentite. Se il programma tenta di eseguire un'istruzione privilegiata, il processore restituirà il controllo al sistema operativo, che di solito termina il programma che si comporta male. Per i dettagli, vedere ad esempio https://en.wikipedia.org/wiki/Ring_%28computer_security%29

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.