Simplificando, as instruções privilegiadas são geralmente aquelas relacionadas a E / S com dispositivos de hardware ou proteção de memória. O acesso àqueles de processos arbitrários sem passar por alguma lógica central tornaria possível que os processos destruíssem a memória de outros processos, atrapalhassem o sistema de arquivos, etc., por acidente ou de propósito.
Se considerarmos algumas chamadas de sistema comuns, há, por exemplo, open()
, read()
, write()
e outros que acessam arquivos e, no final, resultam em E / S para o disco ou algum outro dispositivo. Ou fork()
e mmap()
que afetam a memória de um processo ou de outros processos.
É claro que algo como fazer um processo não chamar uma chamada de sistema não requer privilégios e pode ser feito com uma biblioteca. O mesmo para falsificar os resultados de uma chamada do sistema. Embora, é claro, algo como alterar todos os registros de data e hora de duas semanas para trás (como o libfaketime
example) exija descobrir o horário correto primeiro, e isso precisa acontecer por meio de uma chamada de sistema. Além de libfaketime
e libeatmydata
, há, e. fakeroot
que finge que um processo está sendo executado sob o UID 0.