sudo如何记住您已经输入root的密码?


27

在Linux上使用sudo时,它会要求输入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怎么做?此信息存储在哪里?我的想法是,它会记住终端ID(如pts / 1),但是此存储在何处?使用命令完成第一个sudo进程后,对吗?

我知道sudo是setuid程序,因此它始终具有root特权,但是我仍然想不出一个存储用户已经输入密码的信息的好地方。是否有一些守护进程参与其中?


1
还有的须藤如何在这里工作一个很好的概述:aplawrence.com/Basics/sudo.html它详细须藤的行为与记忆密码(如默认的超时时间为5分钟),但它不包括的具体细节如何须藤记住密码。仍然很有趣。

12
只是一个小小的修正,须藤会询问您密码,而不是root的密码

Answers:


16

此信息存储在哪里?

它可能在/var/db/sudo或下/var/run/sudo,您可能会找到用户名目录,该用户名下的文件按tty号排序。

授予的实际特权(包括会话持续多长时间才必须再次输入密码)取决于设置sudoers的方式。有一些设置可以授予/限制很多不同的东西,但是这些没有存储在仅存储时间戳的文件中。会话持续多长时间,或者sudo需要何时再次提示输入密码,取决于当前时间的增量和此目录中的会话时间戳,以及sudo设置为允许会话持续多长时间。


2
至于多长时间,来自ubuntu docs:“使用sudo时,默认情况下,您的密码会存储15分钟。”

11

尝试man sudo看看“文件”部分:

/ var / lib / sudo包含时间戳的目录

而在 SECURITY NOTES

sudo将检查其时间戳目录的所有权(默认为/ var / lib / sudo)[...]

(来自Debian 6.0.4的手册页)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.