(vou tentar ser breve.)
Em teoria, existem duas dimensões de privilégios:
-
A arquitetura do conjunto de instruções do computador (ISA), que protege determinadas informações e / ou funções da máquina.
-
O sistema operacional (OS) que cria um ecossistema para aplicativos e comunicação. Em seu núcleo está o kernel, um programa que pode ser executado no ISA sem dependências de qualquer tipo.
Os sistemas operacionais de hoje realizam muitas tarefas diferentes para que possamos usar os computadores como fazemos hoje. Em uma visão muito (muito, muito) simplificada, você pode imaginar o kernel como o único programa que é executado pelo computador. Aplicativos, processos e usuários são todos artefatos do ecossistema criado pelo SO e especialmente pelo kernel.
Quando falamos de privilégios de usuário (espaço) em relação ao sistema operacional, falamos sobre privilégios gerenciados, concedidos e impostos pelo sistema operacional. Por exemplo, as permissões de arquivos que restringem a busca de dados de um diretório específico são impostas pelo kernel. Ele olha para alguns IDs associados ao arquivo, interpreta alguns bits que representam privilégios e, em seguida, busca os dados ou se recusa a fazê-lo.
A hierarquia de privilégios dentro do ISA fornece as ferramentas que o kernel usa para seus propósitos. Os detalhes específicos variam muito, mas em geral existe o modo kernel, no qual programas executados pela CPU são muito livres para executar I / O e usar as instruções oferecidas pelo ISA e o modo de usuário onde I / O e instruções são restrito.
Por exemplo, ao ler a instrução para gravar dados em um endereço de memória específico, uma CPU no modo kernel poderia simplesmente gravar dados em um endereço de memória específico, enquanto no modo usuário executa primeiro algumas verificações para ver se o endereço de memória está em um intervalo de endereço permitido para o qual os dados podem ser gravados. Se for determinado que o endereço não pode ser gravado, normalmente, o ISA mudará para o modo kernel e iniciará a execução de outro fluxo de instruções, que é uma parte do kernel e fará a coisa certa (TM).
Esse é um exemplo de uma estratégia de execução para garantir que um programa não interfira em outro programa ... para que o javascript na página da Web que você está visitando não faça com que seu aplicativo bancário on-line realize transações duvidosas ...
Observe que, no modo kernel, nada mais é acionado para impor a coisa certa, presume-se que o programa em execução no modo kernel esteja fazendo a coisa certa. É por isso que no modo kernel nada pode forçar um programa a aderir às regras e conceitos abstratos do ecossistema do sistema operacional. É por isso que os programas em execução no modo kernel são comparativamente poderosos como o usuário root.
Tecnicamente, o modo kernel é muito mais poderoso do que ser apenas o usuário root em seu sistema operacional.