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

8

Com base na parte da primeira resposta desta pergunta :

ler de um arquivo (o kernel deve verificar se as permissões permitem que você leia esse arquivo e, em seguida, o kernel executa as instruções reais no disco para ler o arquivo)

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

Ron Vince
fonte
A pergunta é muito vaga / obscura para ser respondida.
precisa saber é
Esta questão envolve praticamente várias coisas. Ela pode exigir um para ler sobre chamada de sistema , privilégio e nível de privilégio . Não sei como formular a pergunta melhor. De alguma forma, Steven D entende o que quero dizer.
Ron Vince

Respostas:

13

Primeiro, um esclarecimento:

É necessário ter privilégio de root para alterar a permissão para um arquivo.

No man 2 chmod , podemos ver que a chamada do sistema chmod () retornará EPERM (um erro de permissão) se:

O UID efetivo não corresponde ao proprietário do arquivo e o processo não é privilegiado (Linux: ele não possui o recurso CAP_FOWNER).

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

Então, existem relações entre raiz e kernel?

Como o texto que você citou apontou, o kernel é responsável por verificar se o UID do processo que está fazendo uma chamada do sistema (ou seja, o usuário em que está executando) tem permissão para fazer o que está pedindo. Assim, os superpoderes do root vêm do fato de o kernel ter sido 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 acontecem verifica se o UID fornecido possui a capacidade necessária . O sistema de recursos permite um controle mais refinado sobre quem tem permissão para fazer o que.

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

Observe que, enquanto processos executados como UID = 0 têm privilégios de superusuário, eles ainda precisam fazer solicitações do kernel por meio da interface de chamada do sistema.

Portanto, um processo no espaço do usuário, mesmo rodando como root, ainda é limitado no que pode ser feito no " modo de usuário " e o kernel no " modo de kernel ", que são modos distintos de operação para a própria CPU. No modo kernel, um processo pode acessar qualquer memória ou emitir qualquer instrução. No modo de usuário (nas CPUs x86, na verdade, existem vários modos protegidos diferentes), um processo pode acessar apenas sua própria memória e emitir apenas algumas instruções. Portanto, um processo de espaço do usuário em execução como root ainda tem acesso apenas aos recursos do modo do kernel que o kernel expõe a ele.

Steven D
fonte
Devemos dizer que root ou UID = 0 tem o privilégio no nível do kernel? Ou existem restrições aplicadas pelo kernel à raiz?
Ron Vince
Processos em execução como UID = 0 têm privilégios de superusuário; no entanto, eles ainda fazem solicitações do kernel por meio da interface de chamada do sistema. Um processo de espaço do usuário, mesmo executando como root, ainda é limitado no que pode ser executado no "modo de usuário" e o kernel está executando no "modo de kernel", que são modos de operação distintos para a própria CPU. Um processo de espaço do usuário em execução como root ainda tem acesso apenas aos recursos do modo kernel que o kernel expõe a ele. Veja linfo.org/kernel_mode.html para mais informações.
Steven D
Adicionei meu elogio à resposta com alguns links.
Steven D
Você tem alguma recomendação de livros Unix?
Ron Vince
Owh .. obrigado por dizer isso. Ainda estou fazendo uma revisão da literatura com base nas respostas dadas. Eles apontam para a ideia e os materiais da literatura, mas ainda não tenho certeza para determinar o certo ou o errado dessas respostas.
Ron Vince