apt-get upgrade 期间 sudo 权限不会超时

apt-get upgrade 期间 sudo 权限不会超时

考虑一下:您输入内容$sudo apt-get upgrade后,会得到一份需要升级的列表,并输入“Y\n”确认。在您阅读列表并输入“Y”或“n”之前,电话响了,或者您的老板进来了,或者您做了其他事情。一小时后您回来,然后按 Y 安装更新。

系统不会再次提示您输入密码。据推测,shell 中的任何其他 sudo 命令都将执行,因为计时器已暂停等待用户输入。或者用户可以终止更新过程并执行类似操作,sudo -i并无限期地保持 root 身份。

我正在使用 ubuntu mate 14.04

这是一个值得注意的安全异常吗?我应该尝试在某个地方报告吗?如果是,在哪里?

答案1

sudo由于已完成其工作并以 root 身份启动,因此不会提示您输入密码apt-get。在提示符下,apt-get进程仍在运行,因此由于它仍以 root 身份运行,因此无需再次输入密码。

换句话说,只要sudo'ed 进程正在运行,就不会要求您再次输入该进程的密码;sudo不会每 15 分钟(默认超时)中断该进程并询问您的密码。

现在,如果你打开另一个终端并尝试在 下运行另一个进程sudo,那么你将要提示您输入密码。

答案2

sudo的默认timestamp_timeout变量是 15 分钟。这意味着,如果您sudo apt-get upgrade在 15 分钟内单击 n,则可以预期使用 进入 root shell sudo -i。这正是发生的事情。但是,如果您将其设置/etc/sudoersDefault timestamp_timeout 0,则每次都会提示您输入它。就我个人而言,我将其设置为 3。如果您的 sudo 甚至在 15 分钟后也没有超时,那么您的二进制文件就有严重问题sudo

这种行为并不是安全漏洞,而只是 sudo 用户的“便利功能”。不过,我同意,为了更严格的安全性,timestamp_timeout必须将时间设置为比 15 分钟短得多的时间。

笔记:passwd_timeout我在评论中提到的选项实际上会在您 x 分钟内未输入密码时使密码提示超时。这是让您意识到应该man sudoers更加仔细阅读的美好时刻之一。

答案3

我建议您输入sudo apt-get upgrade && exit此命令,升级完成后将退出终端。取消升级后,终端不会关闭,但我认为情况并非如此。

相关内容