Как долго пароль для выполнения команды с sudo кэшируется?


23

Если я запускаю команду, для которой требуются права суперпользователя sudo, мне будет предложено ввести пароль текущего пользователя. После этого на некоторое время, если я выполню команды такого же типа sudo, мне больше не придется запрашивать пароль. Поэтому я предполагаю, что пароль где-то кешируется, пока не истечет срок его действия. Как долго это время истечения? Можно ли это настроить?


1
Просто к вашему сведению, вы можете предложить продлить срок действия с помощью sudo -v. Это отлично подходит для размещения в верхней части сценариев, которые запускают команды sudo, так что в начале вас просят ввести пароль.
Вальбака

Обратите внимание, что sudo на самом деле не кеширует пароль. Судо на самом деле вообще не нуждается в пароле, чтобы выполнять свою работу, он только спрашивает, чтобы убедиться, что пользователь разрешил выполнить данную команду. По существу, он кэширует учетные данные пользователей в течение определенного периода (в виде специальной «отметки времени», см. Топ-ответ), в течение которого пользователю не требуется повторная проверка себя. Сам пароль не кэшируется (хранится), в отличие от веб-браузера или ключей шифрования.
Энтони

Ответы:


20

man 5 sudoersсообщает нам, что есть опция timestamp_timeout:

timestamp_timeout

Количество минут, которое может пройти, прежде чем sudo снова запросит пароль. Тайм-аут может включать дробный компонент, если мелкая детализация недостаточна, например, 2.5. Значение по умолчанию - 5. Установите 0, чтобы всегда запрашивать пароль. Если установлено значение меньше 0, отметка времени пользователя никогда не истечет. Это можно использовать, чтобы позволить пользователям создавать или удалять свои собственные метки времени через «sudo -v» и «sudo -k» соответственно.

Так что да, он может быть настроен через /etc/sudoers, и по умолчанию он истекает через 5 минут.


4
и вы знаете, использовать visudoдля редактирования sudoконфигурации, НИКОГДА не редактировать /etc/sudoersнапрямую.
Карлос Кампдеррос

2
@ CarlosCampderrós: ​​правда это. И (где это возможно) всегда держите другую корневую оболочку открытой, чтобы быть на безопасной стороне. :)
Ульрих Шварц

7

Это зависит от вашей конфигурации. По умолчанию в большинстве дистрибутивов (и в источнике) это 5 минут, но вы можете изменить его с помощью timestamp_timeoutопции в /etc/sudoers. От man sudoers:

Количество минут, которое может пройти, прежде чем sudo снова запросит пароль. Тайм-аут может включать дробный компонент, если мелкая детализация недостаточна, например, 2.5. Значение по умолчанию - 5. Установите 0, чтобы всегда запрашивать пароль. Если установлено значение меньше 0, отметка времени пользователя никогда не истечет. Это можно использовать, чтобы позволить пользователям создавать или удалять свои собственные метки времени с помощью «sudo -v» и «sudo -k» соответственно.

Например, чтобы установить тайм-аут для пользователя chrisравным 20 минутам, добавьте следующее /etc/sudoersили в файл в /etc/sudoers.d(обратите внимание: порядок правил в этих файлах и порядок этих файлов имеют значение, убедитесь, что он не был непреднамеренно переопределен правило, которое выполняется позже):

Defaults:chris timestamp_timeout=20
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.