Почему sudo запрашивает пароль в окне после того, как я только что аутентифицировался в другом?

10

Если я использую командную строку в xterm, gnome-terminal и т. Д., Я могу sudoв некоторых пределах отказаться от повторного запроса пароля или отключить его.

В качестве компромисса между удобством использования и безопасностью я обычно просто хочу, чтобы время ожидания повторного запроса было увеличено.

По умолчанию после ввода пароля sudo остается только 15-минутный льготный период, после чего он запрашивает его снова. Чтобы изменить это на 45 минут, я могу отредактировать /etc/sudoersи установить timestamp_timeout на период ожидания, который я хочу (в минутах).

файл sudoers

Если я нахожусь в том же терминальном сеансе и запускаю новую оболочку (ввод cshили bash), период ожидания соблюдается.

Но если я перейду к другому окну для доступа к командной строке, он немедленно запросит мой пароль, если я попытаюсь sudo.

В том же сеансе псевдотерминала ( pts) (например, если я создаю новую оболочку в том же окне терминала gnome), тайм-аут соблюдается.

Если я запускаю новый xterm, gnome-терминал и т. Д., Я должен снова ввести учетные данные.

Несмотря на то, что sudo является единственным активным пользователем в моей домашней системе (однопользовательская система) и т. Д., Sudo не верит, что все мои ptsзаписи принадлежат одному и тому же пользователю:

~/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

Есть ли способ сообщить sudo, что он должен рассматривать все окна, которые я открываю, как исходящие от одного и того же пользователя, и не запрашивать снова мой пароль, если время последнего таймера sudo не истекло?

belacqua
источник

Ответы:

12

Льготный период контролируется так sudoназываемым «билетом». Когда вы аутентифицируетесь с помощью sudo, он создает этот билет с определенной отметкой времени, которая в основном говорит, когда истекает срок аутентификации.

По умолчанию (это устанавливается при компиляции пакета) этот тайм-аут, как вы обнаружили, равен tty . Эта особенность sudo называется tty_tickets. По сути, это означает, что вместо создания одной блокировки на пользователя, sudo вместо этого создает одну блокировку на tty.

Чтобы вернуться к старому поведению и переопределить настройки по умолчанию, вам необходимо отредактировать /etc/sudoers. Найдите Defaultsстроку " ", которую вы уже отредактировали, чтобы изменить время ожидания, и добавьте ,!tty_ticketsк ней. Это отключит функцию tty_tickets и даст вам желаемое поведение.

Iain Lane
источник