文档

文档

如果我使用 运行一个耗时的命令sudo,在它运行完成后,如果我使用 运行另一个命令sudo,似乎我不需要再次输入密码。似乎我输入的密码在前一个命令运行时一直被缓存,并且在前一个命令运行完成后仍被缓存一段时间。

什么时候开始计算密码缓存设置的时间限制sudo

谢谢。


更新:

$ sudo sleep 14m ; sudo ls;
[sudo] password for t: 
file  file1  file2  

$ sudo sleep 15m; sudo ls;
[sudo] password for t: 
[sudo] password for t: 

上述命令是否意味着密码缓存的时间限制从我输入密码时开始计算?

答案1

只有每个用户的超时时间。超时的开始时间戳存储在文件中。文件的位置因操作系统而异。使用 sudo 的大多数有效操作都会重置时间戳。像这样的操作sudo -n不会重置时间戳。像这样的操作sudo -k将删除时间戳。

要检查该文件,您需要一个以 root 身份运行的控制台,以便能够随时列出该文件,并需要另一个控制台来启动、擦除和测试时间戳文件。

  1. 打开控制台,登录root;列出时间戳文件:

    $ sudo su -
    [sudo] password for thisuser: ******
    # ls -la /var/lib/sudo/ts/thisuser
    -rw------- 1 root thisuser  240 Jul 24 07:20 thisuser
    
  2. 在里面第二控制台,重置时间戳(大写 K):

    $ sudo -K
    
  3. 使用第一个控制台检查文件是否已被删除。

  4. 启动新的 sudo 会话

    $ sudo su -
    [sudo] password for thisuser: ******
    # ls -la /var/lib/sudo/ts/thisuser
    -rw------- 1 root thisuser  240 Jul 24 07:25 thisuser
    

该文件中的时间是上次更新时间,可能是默认时间戳超时开始的时间点。实际上它是包含在文件内的时间戳,但在大多数情况下两者是相同的。


文档

来自 man sudoers (默认超时以分钟为单位 ( 15))。 (强调我的)

timestamp_timeout
sudo 再次要求输入密码之前可以经过的分钟数。如果微小粒度不够,则超时可以包括小数部分,例如 2.5。默认值为 15。将其设置为 0 以始终提示输入密码。如果设置为小于 0 的值,则用户的时间戳在系统重新启动之前不会过期。这可用于允许用户分别通过 sudo-v和 sudo创建或删除自己的时间戳。-k

也来自man sudoers(时间戳目录(/var/lib/sudo/ts在Linux中/var/run/sudo/ts在 FreeBSD 和其他))(强调我的):

时间戳目录
sudo 存储其时间戳文件的目录。系统重新启动时应清除该目录。默认为/var/lib/sudo/ts

相关问题
如何读取时间戳文件

答案2

这可能因操作系统而异,但在 Ubuntu 中,默认情况下您的管理权限持续 15 分钟。您可以按照此处所述修改此超时值:https://www.maketecheasier.com/change-the-sudo-password-timeout-in-ubuntu/,例如

相关内容