No Unix tradicional, root
pode fazer qualquer coisa.
No entanto, no Linux moderno (talvez outros Unixes), agora ele tem recursos.
A capacidade discutida aqui é CAP_DAC_OVERRIDE
, qualquer processo com esse recurso ignorará as permissões de arquivo (com exceção de x
, consulte outras respostas).
A maioria dos sistemas será configurada no modo compatível com versões anteriores, para que quando um processo altera seu ID de usuário efetivo para root, ele obtém todos os recursos e, quando o ID de usuário efetivo muda de root, ele elimina os recursos.
Existem maneiras de evitar o descarte de recursos. Isso pode ser usado para transmitir alguns recursos para um processo não-raiz. Há também uma maneira de obter recursos sem tornar-se raiz, isso funciona de maneira semelhante a como um processo se torna raiz.
É o ID do usuário efetivo, o que importa, os IDs de usuário reais e salvos apenas dão permissão para copiar esses IDs para um dos outros IDs (por exemplo, para o ID de usuário efetivo).
SE_linux e namespaces / cgroups, podem restringir o que o root pode fazer.