默认情况下sudo凭证缓存

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

我注意到sudo缓存了密码,直到我发出sudo -k来清除它。

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

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

它实际上缓存了提升的权利,但不是你的密码,并且已经这样做了很长一段时间。 但是,默认情况下,它只会持续十五分钟 。 这是设计的:

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

一旦用户通过身份validation,就会更新时间戳,然后用户可以在短时间内使用没有密码的sudo(5分钟,除非在sudoers中被覆盖)。

并且作为男人sudoers的安全记录:

sudo将检查其时间戳目录的所有权(默认情况下为/ var / db / sudo),如果目录的内容不属于root用户或者root用户以外的用户可写,则忽略该目录的内容。 在允许非root用户通过chown(2)放弃文件的系统上,如果时间戳目录位于任何人可写的目录中(例如,/ tmp),则用户可以创建时间戳目录在sudo运行之前。 但是,因为sudo检查目录及其内容的所有权和模式,所以可以做的唯一损害是通过将文件放在时间戳目录中来“隐藏”文件。 这种情况不太可能发生,因为一旦时间戳目录由root拥有并且任何其他用户都无法访问,用户将文件放在那里将无法将其退回。 要解决此问题,您可以使用不是世界可写的时间戳(例如/ var / adm / sudo)或使用适当的所有者(root)和权限(0700)创建/ var / db / sudo的目录。在系统启动文件中。

并从同一页面:

由于时间戳文件存在于文件系统中,因此它们可以比用户的登录会话寿命更长。 因此,只要时间戳文件的修改时间在5分钟之内(或者设置了超时),用户就可以登录,在认证,登出,再次登录后运行带有sudo的命令,并运行sudo而无需进行身份validation在sudoers)。 在sudoers中启用tty_tickets选项时,时间戳具有多个粒度,但仍可能比用户的会话更长。 在使用devpts文件系统的Linux系统上,具有设备文件系统的Solaris系统,以及利用devfs文件系统的其他系统,这些系统在创建设备时单调增加设备的inode数量(例如Mac OS X),sudo能够确定基于tty的时间戳文件何时过时并将忽略它。 管理员不应该依赖此function,因为它不是普遍可用的。

如此处所示,此行为已持续很长时间。

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