Dlaczego sudo pyta o hasło w oknie po tym, jak właśnie uwierzytelniłem się w innym?

10

Jeśli korzystam z wiersza poleceń w xterm, terminalu gnome itp., Mogę powstrzymać się sudood ponownego monitowania o hasło, w pewnych granicach, lub mogę je wyłączyć.

Jako kompromis między użytecznością a bezpieczeństwem, zwykle chcę po prostu wydłużyć czas ponownego zapytania.

Domyślnie jest tylko 15 minutowy okres karencji po wprowadzeniu hasła sudo, zanim zostanie ponownie o to poproszony. Aby zmienić to na 45 minut, mogę edytować /etc/sudoersi ustawić timestamp_timeout na żądany okres oczekiwania (w minutach).

plik sudoers

Jeśli jestem w tej samej sesji terminala i zaczynam nową powłokę (wpisując cshlub bash), okres oczekiwania jest przestrzegany.

Ale jeśli przejdę do innego okna, aby uzyskać dostęp do wiersza poleceń, natychmiast poprosi o hasło, jeśli spróbuję sudo.

W tej samej sesji pseudoterminalnej ( pts) (na przykład, jeśli spawnuję nową powłokę w tym samym oknie terminala gnome), limit czasu jest przestrzegany.

Jeśli uruchomię nowy xterm, terminal gnome itp., Muszę ponownie wprowadzić dane uwierzytelniające.

Pomimo tego, że jestem jedynym użytkownikiem aktywnym w moim systemie domowym (system dla jednego użytkownika) itp., Sudo nie wierzy, że wszystkie moje ptswpisy pochodzą od tego samego użytkownika:

~/pseudoland$ w
 01:27:39 up 1 day, 15:03,  7 users,  load average: 0.32, 0.71, 0.77
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
jgb    tty1                      23:56    1:30m  0.55s  0.51s -bash
jgb    tty7     :0               Tue10   39:03m  2:28m  0.76s gnome-session
root     pts/1    :0.0             00:30   56:23   0.01s  0.01s /bin/bash
jgb    pts/3    :0.0             01:16    0.00s  0.59s  3.22s gnome-terminal
jgb    pts/4    :0.0             01:27   26.00s  0.23s  0.23s /bin/bash
jgb    pts/5    :0.0             01:17    9:26   0.23s  0.23s bash

Czy istnieje sposób, aby powiedzieć sudo, że powinien traktować wszystkie okna, które otwieram, jako pochodzące od tego samego użytkownika i nie pytać ponownie o hasło, jeśli ostatni zegar sudo nie upłynął?

Belacqua
źródło

Odpowiedzi:

12

Okres karencji jest kontrolowany przez to, co sudonazywa się „biletem”. Gdy uwierzytelniasz się w sudo, tworzy on ten bilet z określonym znacznikiem czasu, który w zasadzie mówi, kiedy uwierzytelnienie powinno wygasnąć.

Domyślnie (jest to ustawione, gdy pakiet jest kompilowany), limit czasu jest, jak ustalono, na tty . Jest to funkcja sudo o nazwie „tty_tickets”. Zasadniczo oznacza to, że zamiast tworzyć jedną blokadę na użytkownika, sudo tworzy jedną blokadę na tty.

Aby przywrócić stare zachowanie i zastąpić domyślne, musisz edytować /etc/sudoers. Znajdź Defaultswiersz „ ”, który już edytowałeś, aby zmienić limit czasu, i dołącz ,!tty_ticketsdo niego. Spowoduje to wyłączenie funkcji tty_tickets i zapewni Ci pożądane zachowanie.

Iain Lane
źródło