Seu entendimento está correto. “Ring 0” é o termo x86 para o modo kernel do processador. "Rodando no anel 0" significa "código do kernel".
Em termos de segurança, tudo o que pode ser feito por um processo (sob qualquer UID) pode ser feito pelo kernel. Algumas coisas são muito inconvenientes para fazer a partir do código do kernel, por exemplo, abrir um arquivo, mas elas são possíveis.
Por outro lado, em circunstâncias normais, se você puder executar o código sob o UID 0, poderá executar o código do kernel carregando um módulo do kernel. Portanto, não há barreira de segurança entre o UID 0 e o nível do kernel em uma configuração típica. No entanto, o código em execução em um processo ainda é limitado pelas limitações do modo de usuário do processador: cada acesso a um periférico (incluindo discos, rede, etc.) ainda tem que passar por uma chamada de sistema. É possível configurar uma máquina para ter um UID 0 que não seja todo poderoso, por exemplo:
- Desativar o carregamento de módulos do kernel.
- Use uma estrutura de segurança , como SELinux para remover privilégios de um processo: O UID 0 não necessariamente supera esses, por exemplo, é possível criar uma conta guest com UID 0, mas essencialmente sem privilégios com a política SELinux correta.
- O UID 0 em um namespace de usuário tem apenas as permissões do criador de espaços para nome.