首页 > 解决方案 > 是否可以在当前 shell 中禁用 sudo 超时?

问题描述

某些应用程序(例如yay)使用 sudo 以 root 身份运行某些命令。这意味着我必须坐在终端前,等到 sudo 提示我输入密码,然后手动输入密码才能继续。我可以通过首先以 sudo 身份运行命令来避免这种情况(如sudo -v)。这样,yay 可以以 sudo 的身份运行命令,而不会提示我输入密码。

但有时,应用程序需要很长时间才能安装,以至于 sudo 会话超时(15 分钟)并且 sudo 会重新提示我输入密码。由于发生这种情况时我通常会离开计算机或切换到其他工作区,因此 sudo 密码提示通常会超时,这非常烦人。

我不想完全禁用 sudo 超时,因为它的存在是有原因的。但是,当我预计使用 sudo 的命令需要很长时间时,我希望能够仅对当前 shell 禁用 sudo 超时。

就像是:

sudo --disable-timeout

现在我应该能够在当前 shell 中运行 sudo ,而无需重新输入我的密码,或者直到我运行sudo -k.

这样的事情可能吗,还是我必须编写一个包装脚本来定期为我刷新 sudo 会话?

标签: linuxsudo

解决方案


对于当前的 shell ,似乎没有简单的方法可以做到这一点,但您可以全局设置超时。

为了设置与默认值(=15 分钟)不同的超时(全局),您可以编辑/etc/sudoers

sudo visudo                                       # opens /etc/sudoers for editing
# change the following line:
# Defaults    env_reset
# to:
Defaults        env_reset,timestamp_timeout=30    # timeout in minutes

或者:

cd /etc/sudoers.d
sudo visudo -f username
Defaults        env_reset,timestamp_timeout=30    # timeout in minutes

特殊值:

  • -1: 没有超时
  • 0: 每次都会提示

推荐阅读