Jak sudo pamięta, że ​​już podałeś hasło roota?

27

Podczas korzystania z sudo w systemie Linux pyta o hasło roota, ale tylko przy pierwszym uruchomieniu. Jeśli uruchomisz inną komendę sudo, pamięta, że ​​już wpisałeś hasło i nie prosi o nie:

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)

Jak robi to sudo? Gdzie są przechowywane te informacje? Moim pomysłem jest to, że pamięta identyfikator terminala (jak pts / 1), ale gdzie to jest przechowywane? Pierwszy proces sudo kończy się, gdy jest wykonywany z poleceniem, prawda?

Wiem, że sudo to program setuid, więc ma przez cały czas uprawnienia root'a, ale wciąż nie mogę znaleźć dobrego miejsca do przechowywania informacji, że użytkownik już wprowadził hasło. Czy w grę wchodzi proces demona?

Kuba
źródło
1
Istnieje całkiem dobry przegląd działania sudo tutaj: aplawrence.com/Basics/sudo.html Szczegółowo opisuje zachowanie sudo z zapamiętywaniem haseł (np. Domyślny limit czasu to 5 minut), chociaż nie obejmuje szczegółów, w jaki sposób sudo zapamiętuje hasło . Wciąż jednak interesujące.
12
Tylko niewielka korekta, sudo poprosi o swoim hasłem, nie hasło roota

Odpowiedzi:

16

Gdzie są przechowywane te informacje?

Prawdopodobnie jest pod /var/db/sudolub /var/run/sudoi prawdopodobnie znajdziesz katalogi nazw użytkowników z plikami pod nimi uporządkowanymi według numeru tty.

Rzeczywiste przyznane uprawnienia, w tym czas trwania sesji przed ponownym wprowadzeniem hasła, zależą od konfiguracji sudoers. Istnieją ustawienia dotyczące przyznawania / ograniczania wielu różnych rzeczy, ale nie są one przechowywane w tych plikach, które przechowują tylko znaczniki czasu. Czas trwania sesji lub kiedy sudo musi ponownie poprosić o podanie hasła, zależy od delty bieżącego czasu i znacznika czasu sesji w tym katalogu oraz od tego, jak długo sudo jest skonfigurowane, aby sesja mogła trwać.

Jon Lin
źródło
2
O tym, jak długo, z dokumentów ubuntu : „Podczas korzystania z sudo twoje hasło jest przechowywane domyślnie przez 15 minut”.
11

Spróbuj man sudozajrzeć do sekcji PLIKI:

/ var / lib / sudo Katalog zawierający znaczniki czasu

I na SECURITY NOTES

sudo sprawdzi własność katalogu znaczników czasu (domyślnie / var / lib / sudo) [...]

(strony podręcznika użytkownika od Debian 6.0.4)

Andreas Florath
źródło