Como o sudo lembra que você já digitou a senha do root?

27

Ao usar o sudo no Linux, ele solicita a senha root, mas apenas na primeira vez em que você o executa. Se você executar outro comando sudo, lembre-se de que você já digitou a senha anteriormente e não pede:

thomas@ubuntu:~$ sudo id
[sudo] password for thomas: ******
uid=0(root) gid=0(root) groups=0(root)
thomas@ubuntu:~$ sudo id
uid=0(root) gid=0(root) groups=0(root)

Como o sudo faz isso? Onde essas informações são armazenadas? Minha idéia é que ele se lembre da identificação do terminal (como pts / 1), mas onde isso é armazenado? O primeiro processo sudo é encerrado quando o comando é finalizado, certo?

Eu sei que sudo é um programa setuid, por isso tem privilégios de root o tempo todo, mas ainda não consigo pensar em um bom lugar para armazenar informações que um usuário já digitou uma senha. Existe algum processo de daemon envolvido?

kuba
fonte
11
Há uma boa visão geral de como o sudo funciona aqui: aplawrence.com/Basics/sudo.html Ele detalha o comportamento do sudo com a lembrança de senhas (por exemplo, o tempo limite padrão é de 5 minutos), embora não cubra as especificidades de como o sudo se lembra da senha . Ainda interessante, no entanto.
12
Apenas uma pequena correção, sudo pede-lhe para a sua senha, não a senha do root

Respostas:

16

Onde essas informações são armazenadas?

Provavelmente está sob /var/db/sudoou /var/run/sudoe você provavelmente encontrará diretórios de nomes de usuários com arquivos sob eles, ordenados pelo número tty.

Os privilégios reais concedidos, incluindo quanto tempo as sessões duram antes que você precise digitar sua senha novamente, depende de como o sudoers está configurado. Existem configurações para conceder / restringir muitas coisas diferentes, mas elas não são armazenadas nesses arquivos que armazenam apenas carimbos de data e hora. A duração de uma sessão, ou quando o sudo precisa solicitar sua senha novamente, é determinada pelo delta da hora atual e pelo carimbo de data / hora da sessão neste diretório, e por quanto tempo o sudo está configurado para permitir que a sessão dure.

Jon Lin
fonte
2
Quanto tempo, a partir do ubuntu docs : "Ao usar o sudo, sua senha é armazenada por padrão por 15 minutos."
11

Experimente man sudoe dê uma olhada na seção FILES:

Diretório / var / lib / sudo contendo carimbos de hora

E no SECURITY NOTES

O sudo verificará a propriedade do diretório do carimbo de data / hora (/ var / lib / sudo por padrão) [...]

(páginas de manual do Debian 6.0.4)

Andreas Florath
fonte