某些应用程序(例如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会话?
答案 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