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

10

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

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

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

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

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

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

Если я запустил новый xterm, gnome-terminal и т. д., я должен снова ввести учетные данные.

Несмотря на то, что он является единственным пользователем, активным в моей домашней системе (однопользовательская система) и т. д., 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              [email protected]   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 10.02.2011 в 07:37
источник

1 ответ

12

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

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

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

    
ответ дан Iain Lane 10.02.2011 в 09:14
источник