Quanto tempo dura a senha para executar um comando com o sudo em cache?

23

Se eu executar um comando que requer privilégios de root sudo, será solicitado que você digite a senha do usuário atual. Depois disso, por um tempo, se eu executar o mesmo tipo de comando sudo, não será solicitada a senha novamente. Então, meu palpite é que a senha é armazenada em cache em algum lugar até que ela expire. Quanto tempo dura esse prazo de validade? É possível configurá-lo?

Meysam
fonte
1
Apenas para sua informação, você pode solicitar o prolongamento da expiração usando sudo -v. Isso é ótimo para colocar no topo dos scripts que executam comandos sudo, para que você solicite a senha no início.
Valbaca
Nota: o sudo realmente não armazena em cache a senha. O Sudo, na verdade, não precisa de uma senha para fazer seu trabalho, apenas pede para verificar se o usuário permitiu executar o comando fornecido. Basicamente, ele armazena em cache as credenciais dos usuários por um período (como um "carimbo de data / hora" especial, veja a resposta principal), durante o qual não exige que o usuário se verifique novamente. A senha em si não é armazenada em cache (armazenada), diferente de um navegador da web ou de chaves de criptografia.
Anthony

Respostas:

20

man 5 sudoersnos informa que existe uma opção timestamp_timeout:

timestamp_timeout

O número de minutos que pode decorrer antes do sudo solicitará uma senha novamente. O tempo limite pode incluir um componente fracionário se a granularidade minuto for insuficiente, por exemplo 2.5. O padrão é 5. Defina como 0 para sempre solicitar uma senha. Se definido como um valor menor que 0, o carimbo de hora do usuário nunca expirará. Isso pode ser usado para permitir que os usuários criem ou excluam seus próprios carimbos de data / hora via "sudo -v" e "sudo -k", respectivamente.

Então, sim, ele pode ser configurado via /etc/sudoerse, por padrão, expira após 5 minutos.

Ulrich Schwarz
fonte
4
e você sabe, use visudopara editar a sudoconfiguração, NUNCA edite /etc/sudoersdiretamente.
Carlos Campderrós
2
@ CarlosCampderrós: ​​É verdade. E (sempre que possível), mantenha sempre outra concha de raiz aberta para estar do lado seguro. :)
Ulrich Schwarz
7

Isso depende da sua configuração. O padrão na maioria das distribuições (e na origem) é de 5 minutos, mas você pode alterá-lo com a timestamp_timeoutopção in /etc/sudoers. De man sudoers:

O número de minutos que pode decorrer antes do sudo solicitará uma senha novamente. O tempo limite pode incluir um componente fracionário se a granularidade minuto for insuficiente, por exemplo 2.5. O padrão é 5. Defina como 0 para sempre solicitar uma senha. Se definido como um valor menor que 0, o carimbo de hora do usuário nunca expirará. Isso pode ser usado para permitir que os usuários criem ou excluam seus próprios carimbos de hora através de "sudo -v" e "sudo -k", respectivamente.

Por exemplo, para definir o tempo limite do usuário chrispara 20 minutos, adicione o seguinte /etc/sudoersou em um arquivo em /etc/sudoers.d(nota: a ordem das regras nesses arquivos e a ordem desses arquivos são importantes, verifique se não é substituído acidentalmente por uma regra que é executada mais tarde):

Defaults:chris timestamp_timeout=20
Chris Down
fonte