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?
permissions
kernel
root
Ron Vince
fonte
fonte
Respostas:
Primeiro, um esclarecimento:
No man 2 chmod , podemos ver que a chamada do sistema chmod () retornará EPERM (um erro de permissão) se:
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.
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.
fonte