Qual é a relação entre raiz e kernel? [fechadas]

7

Com base na parte da primeira resposta de esta pergunta :

read from a file (the kernel must check that the permissions allow you to read from said file, and then the kernel carries out the actual instructions to the disk to read the file)

É necessário ter privilégio de root para alterar a permissão para um arquivo. Com privilégio de root, o usuário pode acessar qualquer arquivo sem se preocupar com permissão. Então, são as relações entre root e kernel?

    
por Ron Vince 27.03.2014 / 05:01

1 resposta

10

Primeiro, um esclarecimento:

It requires to have root privilege to change permission to a" file.

De man 2 chmod podemos ver que a" chamada do sistema chmod () será return EPERM (um erro de permissão) se:

The effective UID does not match the owner of the file, a"nd the process is not privileged (Linux: it does not have the CAP_FOWNER capability).

Isso normalmente significa que você precisa ser o proprietário do a"rquivo ou do usuário root. Mas podemos ver que a" situação no Linux pode ser um pouco mais complicada.

So, a"re the a"ny relationships between root a"nd kernel?

Como o texto que você citou a"pontou, o kernel é responsável por verificar se o UID do processo que faz uma chamada de sistema (isto é, o usuário que está sendo executado como) tem permissão para fazer o que está pedindo. Assim, a"s superpotências do root vêm do fato de que o kernel foi programado para sempre permitir uma operação solicitada pelo usuário root (UID = 0).

No caso do Linux, a" maioria das várias verificações de permissões que a"contecem verifica se o UID fornecido tem o recurso necessário . O sistema de recursos permite um controle mais refinado sobre quem pode fazer o quê.

No entanto, para preservar o significado tradicional do UNIX do usuário "root", um processo executado com o UID de 0 tem todos os recursos.

Note que enquanto os processos rodando como UID = 0 possuem privilégios de superusuário, eles a"inda precisam fazer requisições do kernel a"través da interface de chamada do sistema.

Assim, um processo de espaço de usuário, mesmo sendo executado como root, a"inda é limitado no que pode ser feito em execução no "modo de usuário "e o kernel está rodando em" modo kernel "que são modos de operação distintos para a" própria CPU . No modo kernel, um processo pode a"cessar qualquer memória ou emitir qualquer instrução. No modo de usuário (em CPUs x86 existem, na verdade, vários modos diferentes protegidos), um processo só pode a"cessar sua própria memória e só pode emitir a"lgumas instruções. Assim, um processo de espaço do usuário em execução como root a"inda tem a"cesso a"penas a"os recursos do modo kernel que o kernel expõe a" ele.

    
por 27.03.2014 / 06:37