如果我使用 xterm、gnome-terminal 等中的命令行,我可以sudo
在某些限制内避免重新提示输入密码,或者我可以禁用它。
作为可用性和安全性之间的折衷,我通常只是希望延长这个重新查询的等待时间。
默认情况下,输入 sudo 密码后只有 15 分钟的宽限期,之后会再次提示输入密码。要将其更改为 45 分钟,我可以编辑/etc/sudoers
,并将 timestamp_timeout 设置为我想要的等待时间(以分钟为单位)。
如果我在同一个终端会话中,并启动一个新的 shell(输入csh
或bash
),则等待期会得到尊重。
但是如果我转到另一个窗口访问那里的命令行,它会立即要求我输入密码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 计时器尚未过期,就不要再次询问我的密码?
答案1
宽限期由所谓的sudo
“票据”控制。当您使用 sudo 进行身份验证时,它会创建此票据,其中包含特定的时间戳,该时间戳基本上说明了身份验证何时到期。
默认情况下(这是在编译包时设置的),这个超时是,正如您所发现的,每个 tty。这是 sudo 的一项功能,称为“tty_tickets”。基本上,这意味着 sudo 不是为每个用户创建一个锁,而是为每个 tty 创建一个锁。
为了恢复到旧的行为并覆盖默认行为,您需要编辑/etc/sudoers
。找到Defaults
您已经编辑以更改超时的“ ”行,并将其附加,!tty_tickets
到该行。这将关闭 tty_tickets 功能并为您提供所需的行为。