考虑一下:您输入内容$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/sudoers
为Default timestamp_timeout 0
,则每次都会提示您输入它。就我个人而言,我将其设置为 3。如果您的 sudo 甚至在 15 分钟后也没有超时,那么您的二进制文件就有严重问题sudo
。
这种行为并不是安全漏洞,而只是 sudo 用户的“便利功能”。不过,我同意,为了更严格的安全性,timestamp_timeout
必须将时间设置为比 15 分钟短得多的时间。
笔记:passwd_timeout
我在评论中提到的选项实际上会在您 x 分钟内未输入密码时使密码提示超时。这是让您意识到应该man sudoers
更加仔细阅读的美好时刻之一。
答案3
我建议您输入sudo apt-get upgrade && exit
此命令,升级完成后将退出终端。取消升级后,终端不会关闭,但我认为情况并非如此。