为什么我刚在另一个身份验证后sudo在窗口中要求输入密码?


10

如果我在xterm,gnome-terminal等中使用命令行,则可以sudo在一定限制内避免重新提示输入密码,也可以禁用它。

作为可用性和安全性之间的折衷,我通常只希望延长重新查询的等待时间。

默认情况下,输入sudo密码后只有15分钟的宽限期,然后再次提示输入。要将其更改为45分钟,我可以进行编辑/etc/sudoers,并将timestamp_timeout设置为所需的等待时间(以分钟为单位)。

sudoers文件

如果我在同一个终端会话中,并启动一个新的shell(输入cshbash),则需要等待时间。

但是,如果我转到另一个窗口访问那里的命令行,如果尝试访问它,它将立即询问我的密码sudo

在同一个伪pts终端会话()中(例如,如果我在同一个gnome-terminal窗口内生成一个新的shell),则应遵守超时。

如果启动新的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              LOGIN@   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计时器没有过期,就不要再询问我的密码了?

Answers:


12

宽限期由sudo所谓的“机票”控制。使用sudo进行身份验证时,它将创建带有特定时间戳的票证,该时间戳基本上表明身份验证应何时过期。

默认情况下(在编译软件包时设置),如您所见,此超时是每个tty。这是sudo的一项功能,称为“ tty_tickets”。基本上,这意味着sudo不是为每个用户创建一个锁,而是为每个tty创建一个锁。

为了恢复到旧的行为并覆盖默认行为,您需要进行编辑/etc/sudoers。找到Defaults您已编辑以更改超时的“ ”行,并将,!tty_tickets其追加。这将关闭tty_tickets功能,并为您提供所需的行为。

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.