由于某种原因,我突然在发布时不需要输入密码了sudo some_cmd
。
输入的命令只是运行而不会提示密码,即使我没有以 root 用户身份登录。不过,仍然需要调用需要 root 权限的命令sudo
。我使用的是 Ubuntu 10.04。
知道是什么原因造成的吗?
答案1
说sudo -K
,然后重试您的测试。如果它再次开始询问,则说明您已sudo
配置为记住密码一段时间。
最重要的是,Ubuntu 的默认sudo
配置让它记住你的凭据tty
。ssh
正如您所发现的,这会影响会话,因为每个新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
出于上面给出的方便原因,他们必须构建自己的发行版来禁用此选项。