¿Cómo impide un sistema operativo que un proceso no privilegiado ejecute una instrucción privilegiada?

8

En Unix

si usted es un usuario invitado e hizo:

chmod 777 /

Fallaría

Pero, ¿cómo sucede esto internamente a nivel de hardware?

Hasta ahora, creo que esto es lo que sucede:

  • El sistema operativo intenta ejecutar esa instrucción.
  • La información sobre permisos está quizás en algún lugar de la memoria secundaria. Entonces emitiría una instrucción de escritura.
  • Antes del 2, comprobaría si el usuario tiene el privilegio de hacer esto. Si no lo es, solo emitiría un mensaje de error.

¿Es así como sucede o se produce una interrupción cuando surge tal situación? ¿Hay una rutina en la tabla ISR en la memoria principal correspondiente a instrucciones sin privilegios?

aprendiz
fuente

Respuestas:

10

chmodes una operación del sistema de archivos , no una instrucción privilegiada. Los permisos del sistema de archivos no se manejan a nivel de hardware. El software (específicamente el sistema operativo) ve que el proceso que invoca la llamada al sistema no tiene permisos suficientes para realizar la operación en el objeto del sistema de archivos y la llamada del sistema regresa con un error de permiso.

Ignacio Vazquez-Abrams
fuente
5

En realidad, estás haciendo dos preguntas diferentes:

  1. ¿Cómo impide un sistema operativo que un proceso no privilegiado ejecute una instrucción privilegiada?
  2. ¿Por qué no puede invocar un proceso sin privilegios chmod 777 /?

Respuesta para 2:

chmodinvoca internamente una función de la libc (convenientemente también llamada chmod()). Esta función verifica si la persona que llama tiene suficientes privilegios para la operación; de lo contrario, devuelve un error EPERM.

La respuesta para 1 es más interesante:

El mecanismo exacto depende del sistema operativo y la plataforma de hardware, pero básicamente es así: todos los procesadores modernos tienen funciones de seguridad integradas. Esto permite que el sistema operativo le diga al procesador: "ejecute este programa, pero no permita que ejecute estas instrucciones privilegiadas". Por lo tanto, el propio procesador aplicará la restricción a las instrucciones permitidas. Si el programa intenta ejecutar una instrucción privilegiada, el procesador devolverá el control al sistema operativo, que generalmente terminará el programa que se porta mal. Para más detalles, consulte, por ejemplo, https://en.wikipedia.org/wiki/Ring_%28computer_security%29

sleske
fuente