Как sudo помнит, что вы уже ввели пароль пользователя root?

27

При использовании sudo в Linux он запрашивает пароль root, но только при первом запуске. Если вы запустите другую команду sudo, она помнит, что вы уже ввели пароль ранее, и не запрашивает его:

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)

Как sudo делает это? Где хранится эта информация? Моя идея заключается в том, что он запоминает идентификатор терминала (например, pts / 1), но где он хранится? Первый процесс sudo заканчивается, когда он завершается командой, верно?

Я знаю, что sudo - это программа setuid, поэтому у нее все время есть привилегии root, но я до сих пор не могу найти подходящее место для хранения информации о том, что пользователь уже ввел пароль. Есть ли какой-то процесс, связанный с демоном?

Kuba
источник
1
Здесь довольно хороший обзор того, как работает sudo: aplawrence.com/Basics/sudo.html В нем подробно описывается поведение sudo с запоминанием паролей (например, тайм-аут по умолчанию составляет 5 минут), хотя в нем не рассматриваются особенности того, как sudo запоминает пароль , Тем не менее, интересно.
12
Просто небольшая поправка, sudo запрашивает у вас пароль, а не пароль root

Ответы:

16

Где хранится эта информация?

Это, вероятно, под /var/db/sudoили, /var/run/sudoи вы, вероятно, найдете каталоги имен пользователей с файлами под ними, упорядоченные по номеру tty.

Фактические предоставленные привилегии, в том числе продолжительность сеансов, прежде чем вам придется вводить пароль, зависит от того, как настроен sudoers. Есть настройки для предоставления / ограничения множества разных вещей, но они не хранятся в этих файлах, которые хранят только метки времени. Как долго длится сеанс или когда sudo нужно снова запросить пароль, определяется дельтой текущего времени и меткой времени сеанса в этом каталоге, а также тем, как долго sudo настроен, чтобы сеанс длился.

Джон Лин
источник
2
Как долго, из документации по Ubuntu : «При использовании sudo ваш пароль хранится по умолчанию в течение 15 минут».
11

Попробуйте man sudoвзглянуть на раздел ФАЙЛЫ:

/ var / lib / sudo Каталог, содержащий метки времени

И на SECURITY NOTES

sudo проверит владение своим каталогом отметок времени (по умолчанию / var / lib / sudo) [...]

(справочные страницы из Debian 6.0.4)

Андреас Флорат
источник