Esta é uma ilustração da diferença entre autenticação e autorização .
O Sudo é principalmente uma ferramenta para autorização. Sua tarefa é determinar se você tem permissão para executar um comando com privilégios elevados e, se estiver, para executar esse comando. Uma entrada como
bruno ALL = (ALL): ALL
no arquivo sudoers permite ao usuário bruno executar qualquer comando com qualquer privilégio.
Para aplicar esta regra, o Sudo precisa saber que o usuário invocando é de fato bruno . Em princípio, ele pode confiar no mecanismo de autenticação do sistema: se você puder executar comandos como bruno , isso significa que você já foi autenticado como bruno . No entanto, uma vez que o uso do Sudo pode ter grandes conseqüências, o Sudo requer alguma autenticação extra: você precisa digitar sua senha novamente, às vezes. Isso significa que, se você deixar seu console desacompanhado e um transeunte conseguir executar o comando como bruno , ele não poderá usar o Sudo: ele poderá danificar sua conta, mas não o restante. sistema.
Outra vantagem de solicitar uma senha é que ela avisa que algo incomum está ocorrendo. Por exemplo, um aplicativo não pode chamar silenciosamente sudo : ele precisaria pedir sua senha e um prompt inesperado de senha alertaria você de que algo ruim está ocorrendo.
Na prática, pedir uma senha toda vez que você executar o Sudo seria chato. Portanto, o comportamento padrão é comprometer: peça uma senha a cada poucos minutos. Dessa forma, um passante ou aplicativo pode causar danos executando sudo somente se você tiver feito isso nos últimos minutos.