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?
Odpowiedzi:
Prawdopodobnie jest pod
/var/db/sudo
lub/var/run/sudo
i 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ć.
źródło
Spróbuj
man sudo
zajrzeć do sekcji PLIKI:I na
SECURITY NOTES
(strony podręcznika użytkownika od Debian 6.0.4)
źródło