使用sudo缓存执行命令的密码要多长时间?


23

如果我运行需要使用root特权的命令sudo,系统将要求我输入当前用户的密码。此后一段时间,如果我使用来执行相同类型的命令sudo,则不会再要求我输入密码。因此,我的猜测是密码会缓存在某个地方,直到过期为止。这个到期时间多久?可以配置吗?


1
只是,您可以使用提示延长有效期sudo -v。这非常适合将运行sudo命令的脚本放在顶部,以便在开始时要求您输入密码。
valbaca

注意sudo实际上并不缓存密码。Sudo实际上根本不需要密码即可完成其工作,它只会询问用户是否可以运行给定命令。基本上,它会在一段时间内缓存用户凭据(作为特殊的“时间戳记”,请参见顶部答案),在此期间它不需要用户重新验证自己。与Web浏览器或加密密钥不同,密码本身不会被缓存(存储)。
安东尼

Answers:


20

man 5 sudoers通知我们有一个选择timestamp_timeout

timestamp_timeout

sudo可能经过的分钟数将再次要求输入密码。如果微小粒度不足(例如2.5),则超时可能包括小数部分。默认值为5。将其设置为0总是提示输入密码。如果设置为小于0的值,则用户的时间戳将永不过期。这可用于允许用户分别通过“ sudo -v”和“ sudo -k”创建或删除自己的时间戳。

因此,可以通过进行配置/etc/sudoers,默认情况下,它会在5分钟后过期。


4
而且您知道使用visudo来编辑sudo配置,切勿/etc/sudoers直接编辑。
卡洛斯·坎德罗斯(CarlosCampderrós),

2
@CarlosCampderrós:是的。并且(在可能的情况下)始终保持另一个根外壳处于安全状态。:)
乌尔里希·施瓦茨

7

这取决于您的配置。大多数发行版(以及来源中)的默认设置为5分钟,但您可以使用中的timestamp_timeout选项进行更改/etc/sudoers。来自man sudoers

sudo可能经过的分钟数将再次要求输入密码。如果微小粒度不足(例如2.5),则超时可能包括小数部分。默认值为5。将其设置为0总是提示输入密码。如果设置为小于0的值,则用户的时间戳将永不过期。这可用于允许用户分别通过“ sudo -v”和“ sudo -k”创建或删除自己的时间戳。

例如,为用户的超时设置chris为20分钟,将以下内容添加到/etc/sudoers,或在一个文件中/etc/sudoers.d(注意:在这些文件的规则都顺序这些文件问题的顺序,确保它不会意外被重写稍后执行的规则):

Defaults:chris timestamp_timeout=20
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.