sudo 命令执行时不提示输入密码

sudo 命令执行时不提示输入密码

由于某种原因,我突然在发布时不需要输入密码了sudo some_cmd

输入的命令只是运行而不会提示密码,即使我没有以 root 用户身份登录。不过,仍然需要调用需要 root 权限的命令sudo。我使用的是 Ubuntu 10.04。

知道是什么原因造成的吗?

答案1

sudo -K,然后重试您的测试。如果它再次开始询问,则说明您已sudo配置为记住密码一段时间。

最重要的是,Ubuntu 的默认sudo配置让它记住你的凭据ttyssh正如您所发现的,这会影响会话,因为每个新ssh连接对于低级操作系统代码来说看起来就像一个新终端。

这也会影响图形终端应用程序等内容。如果您使用 进行身份验证sudo,然后使用 Ctrl-Shift-T 创建一个新选项卡,您会发现您不需要sudo在该选项卡中再次输入密码,尽管它还会创建一个新的tty.您甚至可以完全关闭终端应用程序,只要您在正常密码超时内重新启动它,它sudo就会运行,而无需您重新输入密码。此行为可能足以让您决定要保持启用此功能。

如今,Mac OS X 也以这种方式工作。

并非所有 *ix 都这样做。 Red Hat Enterprise Linux(以及 CentOS 等衍生产品)坚持要求在每个新tty.

您可以通过将Defaults行更改/etc/sudoers为如下所示来禁用这两种行为:

Defaults=env_reset,timestamp_timeout=0,tty_tickets
  • env_reset位应该已经存在,并且与此处无关

  • timestamp_timeout指令告诉它立即使每个会话超时sudo。这就像sudo -K在每个正常sudo命令之后说的一样。

  • tty_tickets指令确保它将凭据与tty它们所使用的对象关联起来,而不仅仅是用户名。这应该是默认设置,并且在 Ubuntu 上有这样的记录,但sudo出于上面给出的方便原因,他们必须构建自己的发行版来禁用此选项。

相关内容