默认情况下启用 sudo 凭据缓存

默认情况下启用 sudo 凭据缓存

刚刚安装了一个最小版本的 ubuntu 12.04,然后在首次启动后从命令行安装了 xfce4 和 xinit。据我所知,完全是原始安装。

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

在我看来,这是意料之外的行为。我以前运行过 xfce4,不记得凭证缓存已打开,多年来,在我安装的许多 ubuntu 中也没有遇到过这种情况。

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

答案1

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

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

一旦用户通过了身份验证,时间戳就会更新,然后用户可以在短时间内(5 分钟,除非在 sudoers 中覆盖)无需密码使用 sudo。

并作为一份安全证明人 sudoers

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

并且来自同一页面:

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

正如所见这里,这种行为一直持续很长时间。

如果您想改变这一点,请使用visudo设置timestamp_timeout选项。

相关内容