Por que o timestamp sudo não é atualizado quando o NOPASSWD é definido?

2

Eu configurei o sudo para não solicitar senha editando o arquivo sudoers:

myuser ALL=(ALL:ALL) NOPASSWD: ALL

E funciona bem, executando sudo sem solicitação de senha. Mas ao entrar em sudo -v notei que solicitou senha, apenas uma vez. Eu sei o que o sudo -v faz, do manual:

If given the -v (validate) option, sudo will update the user's time stamp, prompting for the user's password if necessary. This extends the sudo timeout for another 15 minutes (or whatever the timeout is set to in sudoers) but does not run a command.

E eu sei que não preciso usá-lo de qualquer maneira (ou estou errado?).

A questão é: por que sudo -v solicitou senha quando o sudo está configurado para não solicitar a senha do usuário? E especialmente quando sudo -v é executado depois outro comando sudo: por que o registro de data e hora não é atualizado, a menos que sudo -v seja executado exiplicitly?

Minha máquina está executando o Ubuntu Server 11.10 se isso importasse.

EDIT: a execução de sudo sudo -v não requer senha, mas não parece atualizar o registro de data e hora porque, quando seguida imediatamente por sudo -v , ele solicita a senha novamente.

Qual é o mecanismo usado na atualização do timestamp do sudo? Por que o timestamp não é atualizado ao executar qualquer comando sudo e, em seguida, executar sudo -v ??

    
por amyassin 11.10.2012 / 14:32

2 respostas

1

Quase certamente, porque a opção autenticar dos Padrões está definida como em . Da página de manual dos sudoers:

authenticate If set, users must authenticate themselves via a password before they may run commands. This default may be overridden by the PASSWD and NOPASSWD tags. This flag is on by default.

Em outras palavras, seu sinalizador NOPASSWD sobrescreve o requisito de senha mas somente para os comandos especificados. Em qualquer outra circunstância, a senha é necessária. Este padrão foi adicionado para fechar a falha de segurança causada pelo comando sudo -l .

    
por 11.10.2012 / 14:42
1

Considerando que o arquivo sudoers é algo capaz de mudar, remover o parâmetro NOPASSWORD do seu usuário é uma opção que poderia acontecer nos 15 minutos seguintes à sua chamada -v, para criar um arquivo de timestamp (que não existe / não é relevante a menos que você insira uma senha), você é solicitado a fornecer uma senha.

Se você quiser verificar se é capaz de executar algo, recomendo que execute um programa para verificar como id, teste ou o que melhor se adequar ao seu caso de uso.

Editar: Se você executar sudo -v sob sudo ou qualquer outro comando sob sudo, o fato de você ter executado um comando sudo com êxito não conta como autenticação, somente se você tiver inserido a senha ou autenticado usando o PAM de outra maneira (impressão digital, cartão inteligente, chave privada, etc ...).
Em versões recentes do Ubuntu (talvez em outras distribuições) o root pode rodar o sudo sem uma senha por padrão.

    
por 11.10.2012 / 21:06