![Processo no modo de usuário muda para o modo kernel. Então o processo terá privilégios de root?](https://rvso.com/image/52106/Processo%20no%20modo%20de%20usu%C3%A1rio%20muda%20para%20o%20modo%20kernel.%20Ent%C3%A3o%20o%20processo%20ter%C3%A1%20privil%C3%A9gios%20de%20root%3F.png)
De acordo comhttp://www.linfo.org/kernel_mode.htmlno parágrafo 7:
Quando um processo de usuário executa uma parte do código do kernel por meio de uma chamada de sistema, o processo se torna temporariamente um processo de kernel e fica no modo kernel. Enquanto estiver no modo kernel, o processo terá privilégios de root (ou seja, administrativos) e acesso aos principais recursos do sistema. Todo o kernel, que não é um processo, mas um controlador de processos, é executado apenas no modo kernel. Quando o kernel atende à solicitação de um processo, ele retorna o processo ao modo de usuário.
Não está claro para mim sobre a linha,
Enquanto estiver no modo kernel, o processo terá privilégios de root (ou seja, administrativos) e acesso aos principais recursos do sistema.
Como é que um processo do espaço do usuário executado não como root terá privilégios de root? Como isso difere do processo do espaço do usuário executado como root?
Responder1
Privilégios root e não root são coisas relacionadas ao espaço do usuário. Por exemplo, um usuário root pode instalar um aplicativo e um usuário comum não.
No entanto, mesmo o usuário root tem algumas limitações. Essas limitações são impostas pelo design do sistema operacional para diferenciar entre espaço do usuário e espaço do kernel. Por exemplo, mesmo que você seja um usuário root, você não pode alterar a velocidade de rotação do disco rígido se essa opção não for fornecida a você através do driver (você pode escrever um driver que permitirá a função, mas mesmo então você não está acessando o hardware diretamente, mas através do driver).
A razão para isso é que o controle real do hardware é todo feito no espaço do kernel e a forma como o espaço do usuário o acessa é através de chamadas do sistema. Um espaço do kernel não é um lugar para um usuário :)
Para responder à sua pergunta, não é o processo que obtém privilégios de root, é a mudança para o modo kernel que permite acesso ilimitado a todos os recursos do sistema. No entanto, esse acesso ilimitado está disponível apenas para o código em execução no modo kernel, portanto, seu processo não o possui. Está usando apenas as chamadas do código do kernel.
O código executado no modo kernel tem acesso totalmente irrestrito ao sistema.
Responder2
(Vou tentar ser breve.)
Em teoria, existem duas dimensões de privilégios:
O computadorarquitetura do conjunto de instruções(ISA), que protege determinadas informações e/ou funções da máquina.
Osistema operacional(OS) criando um ecossistema para aplicações e comunicação. Em sua essência está o kernel, um programa que pode ser executado no ISA sem dependências de qualquer tipo.
Os sistemas operacionais de hoje executam muitas tarefas diferentes para que possamos usar os computadores como fazemos hoje. Numa 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 sistema operacional e especialmente pelo kernel.
Quando falamos sobre 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 arquivo que restringem a busca de dados de um diretório específico são impostas pelo kernel. Ele analisa alguns IDs associados ao arquivo, interpreta alguns bits que representam privilégios e então 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 os programas executados pela CPU ficam muito livres para realizar E/S e utilizar as instruções oferecidas pelo ISA e o modo usuário onde as E/S e as instruções são restrito.
Por exemplo, ao ler a instrução para escrever dados em um endereço de memória específico, uma CPU no modo kernel poderia simplesmente escrever dados em um endereço de memória específico, enquanto no modo usuário ela primeiro realiza algumas verificações para ver se o endereço de memória está em um endereço de memória específico. intervalo de endereços permitidos nos quais 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 começará a executar outro fluxo de instruções, que faz parte do kernel e fará a coisa certa (TM).
Esse é um exemplo de uma estratégia de fiscalização para garantir que um programa não interfira com outro programa... para que o javascript na página da web que você está visitando no momento não possa fazer com que seu aplicativo de banco on-line execute 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 está 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 executados no modo kernel são tão poderosos quanto o usuário root.
Tecnicamente, o modo kernel é muito mais poderoso do que apenas ser o usuário root em seu sistema operacional.