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.