能否仅在当前Shell中禁用sudo超时,避免长时间操作需重复验证?
临时在当前Shell中取消sudo超时的方法
没问题,你的需求完全可行,而且不用写复杂的包装脚本!这里有两种简单的方式,既能保留全局sudo超时的安全机制,又能临时在当前Shell中避免重复输入密码,直到你主动恢复超时设置:
后台循环自动刷新sudo会话
你可以在当前Shell中启动一个后台循环,定期执行sudo -v来刷新sudo的超时时间,这样就不会因为长时间操作导致会话过期。执行以下命令:while true; do sudo -v; sleep 900; done &解释:
sudo -v会验证并延长你的sudo会话有效期,sleep 900表示每隔15分钟(900秒)刷新一次(刚好匹配默认的sudo超时时间,你也可以改成更短的时间比如sleep 600,提前刷新)。&符号把这个循环放到后台运行,不影响你当前的Shell操作。想要终止这个循环时,先用
jobs命令查看后台任务的编号(比如输出中的[1] running),然后执行kill %1(替换成对应的编号);或者直接执行sudo -k立即终止sudo会话,之后可以手动停止后台循环。启动临时root Shell
如果你要执行的一系列命令都需要root权限,可以直接通过sudo启动一个root Shell,在这个Shell里所有操作默认都是root权限,不需要再输入sudo密码:sudo -s当你完成操作后,输入
exit或者按下Ctrl+D就能退出root Shell,回到普通用户环境,此时sudo的超时机制会恢复正常。
这两种方法都是临时生效的,只会作用于当前Shell会话,关闭Shell后就会自动失效,完全不会修改全局的sudo安全配置,完美匹配你的需求。
内容的提问来源于stack exchange,提问作者Hubro
相关产品推荐
相关产品推荐

