Processe no modo de usuário alternar para o modo kernel. Então o processo terá privilégios de root?

7

De acordo com o link no parágrafo 7:

When a user process runs a portion of the kernel code via a system call, the process temporarily becomes a kernel process and is in kernel mode. While in kernel mode, the process will have root (i.e., administrative) privileges and access to key system resources. The entire kernel, which is not a process but a controller of processes, executes only in kernel mode. When the kernel has satisfied the request by a process, it returns the process to user mode.

Não está claro para mim sobre a linha,

While in kernel mode, the process will have root (i.e., administrative) privileges and access to key system resources.

Como um processo de espaço de usuário não executado como root terá privilégios de root? Como isso difere do processo userspace executado como root?

    
por Ron Vince 28.03.2014 / 15:21

2 respostas

4

(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.

    
por 28.03.2014 / 16:36
6

Privilégios raiz e não-raiz são todos relacionados ao espaço do usuário. Por exemplo, um usuário root pode instalar um aplicativo e um usuário comum não pode.

No entanto, até mesmo o usuário root tem algumas limitações. Essas limitações são impostas pelo design do sistema operacional para diferenciar entre o espaço do usuário e o espaço do kernel. Por exemplo, mesmo massa você é um usuário root, você não pode mudar a velocidade na qual o disco rígido gira se essa opção não for fornecida 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 é feito no espaço do kernel e a maneira como o espaço do usuário acessa é através de chamadas do sistema. Um espaço do kernel não é um lugar para um usuário:)

Para responder a sua pergunta, não é o processo que obtém os 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. Só usando as chamadas do código do kernel.

O código em execução no modo kernel tem acesso irrestrito ao sistema.

    
por 28.03.2014 / 16:05