sudo权限不会在apt-get升级期间超时


9

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

不会再次提示您输入密码。据推测,shell中将执行更多sudo命令,因为计时器一直处于等待用户输入的状态。或者,用户可以终止更新过程并执行类似的操作,sudo -i然后无限期地停留在root用户中。

我正在使用ubuntu mate 14.04

这是一个值得注意的安全例外吗?我应该在某个地方举报吗?如果是这样,在哪里?


5
“大概”是什么意思?您是否尝试过?
luckyrumo 2015年

3
甚至Defaults passwd_timeout=3 在我的sudoers文件中,即使sudo apt-get upgrade没有输入运行密码,我也都尝试过此操作。那不是很好
Sergiy Kolodyazhnyy

我没有问题,在Ubuntu 15.04上使用标准设置
luckyrumo 2015年

1
@TobiasKienzler不。除了添加passwd_timeout部分之外,我没有以任何方式更改sudoers文件。查我的答案。问题在于时间戳超时。这些是不同的选择
Sergiy Kolodyazhnyy 2015年

1
@Serg我知道,有两个超时。令人困惑的方便程度://谢谢:)
Tobias Kienzler 2015年

Answers:


22

系统不会提示您输入密码,因为sudo它已经完成了工作并apt-get以root用户身份启动。在提示符下,该apt-get过程仍在运行,因此,由于它仍以root用户身份运行,因此无需再次输入密码。

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

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


5
...或者实际上是在同一个终端中,在已暂停的sudo命令完成之后
Steeldriver的

3

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更仔细阅读的美好时光之一。


2
请注意,您永远都不要/etc/sudoers直接进行编辑,visudo而应使用它检查语法错误,然后替换sudoers为有错误的文件,否则该文件可能会导致您完全无法从root用户访问
Tobias Kienzler 2015年

0

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.