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?
Respostas:
Provavelmente está sob
/var/db/sudo
ou/var/run/sudo
e 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.
fonte
Experimente
man sudo
e dê uma olhada na seção FILES:E no
SECURITY NOTES
(páginas de manual do Debian 6.0.4)
fonte