默认情况下 sudo 凭据缓存

Dan*_*man 7 xfce sudo password ubuntu-minimal

刚刚安装了一个最小的 ubuntu 12.04,然后在第一次启动后从命令行安装了 xfce4 和 xinit。完全香草安装afaik。

我注意到 sudo 会缓存密码,直到我发出sudo -k清除密码为止。

这是我心目中意料之外的行为。我之前运行过 xfce4 并且不记得正在使用凭据缓存,而且我在多年来安装的许多以前的 ubuntu 安装中也没有体验过它。

这是 Ubuntu 的新功能吗?这是最小安装的结果吗?这是最近添加的 xfce 默认值吗?

nan*_*rad 16

它实际上缓存了提升权限,而不是您的密码,并且已经这样做了很长一段时间。但是,默认情况下,它只执行15 分钟。这是设计使然:

来自 http://linux.die.net/man/8/sudo

一旦用户通过身份验证,时间戳就会更新,然后用户可以在没有密码的情况下使用 sudo 一小段时间(除非在 sudoers 中被覆盖,否则为 5 分钟)。

并作为man sudoers的安全说明:

sudo 将检查其时间戳目录(默认情况下为 /var/db/sudo)的所有权,如果目录的内容不为 root 所有,或者它可由 root 以外的用户写入,则忽略该目录的内容。在允许非 root 用户通过 chown(2) 赠送文件的系统上,如果时间戳目录位于任何人都可以写的目录中(例如,/tmp),则用户可以创建时间戳目录在 sudo 运行之前。但是,由于 sudo 检查目录及其内容的所有权和模式,因此唯一可能造成的损害是通过将文件放入时间戳目录来“隐藏”文件。这不太可能发生,因为一旦时间戳目录由 root 拥有并且任何其他用户都无法访问,则将文件放置在那里的用户将无法将它们取回。

并从同一页面:

由于时间戳文件存在于文件系统中,因此它们的存在时间可能比用户的登录会话长。因此,只要时间戳文件的修改时间在 5 分钟内(或任何超时设置在 sudoers 中)。在 sudoers 中启用 tty_tickets 选项时,时间戳具有每个 tty 的粒度,但仍可能比用户的会话长。在使用 devpts 文件系统的 Linux 系统、具有设备文件系统的 Solaris 系统以及使用 devfs 文件系统的其他系统上,这些系统在创建设备时单调增加设备的 inode 数量(例如 Mac OS X),sudo 能够确定基于 tty 的时间戳文件何时过时并将忽略它。

正如这里看到的,这种行为已经持续了很长时间。

如果要更改此visudo设置,请使用设置timestamp_timeout选项。