Por que o usuário sem qualquer entrada PASSWD na configuração do sudo precisa autenticar todas as vezes?

3

Considere este sudo config para dois usuários:

mary ALL = (ALL) NOPASSWD: /bin/ls, /bin/cat
bob ALL = (ALL) PASSWD: /bin/sort

Agora, quando o usuário mary executar qualquer comando que não esteja na lista, ela deverá autenticar todas as vezes.

$ sudo sort
[sudo] password for mary: 
Sorry, user mary is not allowed to execute '/bin/sort' as root on eagle.

Se mary tentasse novamente executar algum outro comando não permitido, ela seria solicitada pela senha. No entanto, isso não é verdade para bob , que é solicitado apenas uma vez e até o período de tempo limite. Por que mary precisa autenticar de novo e de novo quando ela já conseguiu fornecer sua senha corretamente no passado recente?

Eu encontrei pelo menos um semelhante pergunta mas as respostas / comentários não parecem esclarecer o suficiente. Lá o problema era com a digitação da senha em sudo -v e aqui é sobre comandos não permitidos pela configuração. Sim, a interação de regras com tags PASSWD e NOPASSWD é uma semelhança.

    
por pdp 27.08.2015 / 14:47

2 respostas

3

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.

  1. é essa mary tentando executar um comando - verifique se pedindo nada se é ls ou cat, verifique se a forma padrão é outra coisa.
  2. 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

  1. é esse bob, não importa o que verificar isso com uma senha
  2. é bob, é bob permitido correr foo
  3. 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.

    
por 27.08.2015 / 16:27
1

Eu baixei o sudo SRPM de aqui , compilado e executado de dentro de gdb para ter uma compreensão mais próxima. Essa dica sobre a depuração de programas-raiz do setuid foi inestimável.

O problema é que sudo cria / atualiza o arquivo de registro de data e hora (reside dentro de /var/db/sudo/<user> ) somente quando o usuário está autorizado a executar o comando e também foi autenticado. A autenticação envolve codificação de senha e / ou chamada de um módulo PAM . A autorização é sobre a validação se o usuário tiver permissão para executar o comando especificado. Note que há duas condições aqui.

A implicação da tag NOPASSWD é evitar a autenticação dos comandos listados. Portanto, se um usuário (por exemplo, mary ) não tiver nenhuma entrada PASSWD em config, então, para um comando executado com êxito, ele não precisará autenticar. Nenhum arquivo de timestamp é criado porque o usuário não foi autenticado. Caso contrário, se tal usuário executar um comando que não está autorizado, a autenticação ocorrerá. Mas, novamente, o arquivo não é criado porque ele falhou na autorização.

Segue-se que, para um usuário com uma entrada PASSWD , o arquivo de registro de data e hora será criado somente quando tiver executado com êxito pelo menos um comando dessa lista. O arquivo não é criado ao tentar executar outros comandos não autorizados e sudo tentará autenticar todas as vezes.

    
por 28.08.2015 / 15:44