是否可以在当前shell中禁用sudo超时?

时间:2019-11-19 11:58:47

标签: linux sudo

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

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

我不想完全禁用sudo超时,因为它在那里是有原因的。但是,当我期望使用sudo的命令花费 long 时间时,我希望仅对当前shell禁用sudo超时。

类似的东西:

sudo --disable-timeout

现在,我应该能够在当前shell中运行sudo了,而不必再次输入密码,或者直到我运行sudo -k

是否可能发生这种情况,还是我必须编写一个包装脚本来定期为我刷新sudo会话?

4 个答案:

答案 0 :(得分:2)

对于当前shell 似乎没有简单的方法,但是可以全局设置超时。

要设置与默认设置(= 15分钟)不同的超时(全局),可以编辑ProcessApplication-Create

/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:每次都得到提示

答案 1 :(得分:1)

通常,出于(安全)原因,sudo超时存在。当您(成功)尝试避免该超时时,会削弱系统的安全性。因此,让我们再来看一下所述问题:一段时间后,sudo要求输入密码并超时,您需要进行冗长的工作。您建议阻止sudo要求输入密码。或者,防止sudo超时。放置:

Defaults passwd_timeout=0

进入您的sudoers文件,以使sudo等待您输入密码。这将防止您的超时问题,但是将使构建停止,直到您输入密码为止。从好的方面来说,您可以避免破坏安全性。

或者,由于您特别提到了yay,因此yay有一个命令行选项,该选项使它在后台调用sudo来防止超时。来自man sway

--sudoloop
    Loop sudo calls in the background to prevent sudo from timing out during long builds.

答案 2 :(得分:0)

这是一种可能的解决方法。编写这样的脚本(例如sudo-stay-validated.sh

#!/bin/bash

while true; do
    sudo -v
    sleep 60
done

在应保持sudo验证的终端中运行脚本:

$ bash sudo-stay-validated.sh

按Ctrl + Z将其放在后台,然后记住运行$ bg在后​​台恢复脚本。

这将使sudo在当前shell中得到验证,直到关闭为止。

答案 3 :(得分:0)

那么,为什么不为此目的使用屏幕?与 ssh 连接,启动屏幕,开始命令,并从屏幕解除连接 >。然后,当您准备检查它的程序是否完成时,然后再次附加。但最好将电子邮件通知发送到特殊的电子邮件地址,您的手机会通知您工作已经完成(我希望您拥有或多或少的现代手机)。 https://linux.die.net/man/1/screen