Seus motivos estão corretos, mas em ambos os casos ( su
e sudo
), a razão básica pela qual eles precisam ser executados como root, é que eles precisam alterar os vários identificadores de usuário e grupo do Processo atual. Isso envolve chamar funções como setreuid
, que funcionam apenas para usuários e grupos arbitrários. se o processo de chamada estiver sendo executado como root.
Tanto su
como sudo
têm outros recursos que também exigem execução como raiz, mas são efetivamente detalhes secundários quando comparados com o acima. Como você mencionou, sudo
precisa ler /etc/sudoers
; mas o fato de que o último é legível apenas pela raiz não é um requisito difícil. Ambos os programas podem usar o PAM para executar a autenticação, mas normalmente também incluem fallbacks que exigem a leitura de /etc/shadow
, que também é legível apenas pelo root. A lista continua; mas isso realmente não importa, já que o fato inescapável é que a capacidade de alterar usuários e / ou grupos é atribuída somente ao root, e é por isso que su
e sudo
são setuid root.
Como funcionam os internos do sudo? e as perguntas relacionadas fornecem informações adicionais.