Em suma, é uma questão de segurança. Você disse que Mary pode executar certos comandos sem o fornecimento de uma senha. Isso falha, então a "ação padrão" é tomada. Vá e peça a senha e registre a tentativa falhada.
Sem ficar horrivelmente técnico, é a separação entre autenticação e autorização.
- é essa mary tentando executar um comando - verifique se pedindo nada se é ls ou cat, verifique se a forma padrão é outra coisa.
- Não é possível encontrar uma maneira de autorizar mary. Falsificá-lo. - Falha na autenticação, não há como autenticar mary ao tentar rodar foo
como contraposto a
- é esse bob, não importa o que verificar isso com uma senha
- é bob, é bob permitido correr foo
- não, bob não pode correr foo - Autenticação via senha foi ok, cache isso. Mas não autorize o comando.
Basicamente, você está dizendo que
- com uma senha bob pode executar a classificação,
- sem uma senha, mary pode executar ls
- se mary tenta rodar foo, então ela não pode autenticar (não há método)
- Se Bob tentar executar o foo, ele poderá autenticar, mas não está autorizado.
O motivo pelo qual Maria é solicitada por uma senha é a mesma razão pela qual a barra de usuário é solicitada. De modo que um usuário não poderia dizer, executando um dicionário de comandos comuns contra o sudo para determinar o que é um não é permitido, verificando a saída do comando.
Ou outra maneira de ver isso. Como a variável "o que pode ser executado ao autenticar com uma senha" é nula para Maria, ela nunca poderá autenticar com uma senha. Como a variável "o que pode ser executado ao autenticar com uma senha" não é nula para bob, ele pode autenticar com uma senha, mas não está autorizado a executar algumas coisas.