Na verdade, você está fazendo duas perguntas diferentes:
- Como um sistema operacional impede que um processo sem privilégios execute uma instrução privilegiada?
- Por que um processo não privilegiado não pode invocar
chmod 777 /
?
Responder por 2:
chmod
invoca internamente uma função da libc (convenientemente também chamada chmod()
). Esta função verifica se o chamador tem privilégios suficientes para a operação - se não, ele retornará o erro EPERM
.
A resposta para 1 é mais interessante:
O mecanismo exato depende do SO e da plataforma de hardware, mas basicamente é assim: Todos os processadores modernos possuem recursos de segurança integrados. Isso permite que o sistema operacional informe ao processador: "execute este programa, mas não permita que ele execute estas instruções privilegiadas". Assim, o próprio processador aplicará a restrição às instruções permitidas. Se o programa tentar executar uma instrução privilegiada, o processador passará o controle de volta para o sistema operacional, o que normalmente terminará com o programa mal-comportado. Para detalhes, veja por exemplo link