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

MLi*_*ter 3 password root sudo

由于某种原因,我在发出sudo some_cmd.

即使我没有以 root 用户身份登录,输入的命令也会在不提示密码的情况下运行。尽管如此,仍然需要调用需要 root 权限的命令sudo。我在 Ubuntu 10.04 上。

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

War*_*ung 8

sudo -K,然后重试您的测试。如果它再次开始询问,发生的一切就是您已将sudo密码配置为记住了一段时间。

最重要的是,Ubuntu 的默认sudo配置使其能够记住您跨ttys的凭据。ssh正如您所发现的,这会影响会话,因为每个新ssh连接看起来都像是低级操作系统代码的新终端。

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

Mac OS X 现在也以这种方式工作。

并非所有 *ixes 都这样做。红帽企业 Linux(以及 CentOS 等衍生产品)坚持在每个新的tty.

您可以通过将Defaults行更改为以下内容来禁用这两种行为/etc/sudoers

Defaults=env_reset,timestamp_timeout=0,tty_tickets
Run Code Online (Sandbox Code Playgroud)
  • env_reset位应该已经存在,并且与此处无关

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

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