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

B F*_*ley 24 password sudo timestamps

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

Ulr*_*arz 21

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

timestamp_timeout
Run Code Online (Sandbox Code Playgroud)

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

所以是的,它可以通过配置/etc/sudoers,默认情况下它会在 5 分钟后过期。

  • 你知道,使用 `visudo` 编辑 `sudo` 配置,永远不要直接编辑 `/etc/sudoers`。 (4认同)
  • @CarlosCampderrós:没错。并且(在可能的情况下)始终保持另一个 root shell 打开以确保安全。:) (2认同)

Chr*_*own 8

这取决于您的配置。大多数发行版(和源代码)的默认值是 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
Run Code Online (Sandbox Code Playgroud)