我可以通过这种方式使用 sudo 自动更新/升级吗?

我可以通过这种方式使用 sudo 自动更新/升级吗?

请考虑以下代码:

alias fast='echo "password" | sudo -S apt-get update && sudo -S apt-get upgrade'

我使用它时还没有遇到问题,但是如果第一步apt-get update花费了很长时间,那么当apt-get upgrade命令最终运行时密码是否会失效?

答案1

但是,如果第一步apt-get update花费了很长时间,那么当apt-get upgrade命令最终运行时密码是否会失效?

答案是肯定的,sudo可能会超时并再次要求您输入密码。

  • 另一种方法仍然不安全(但至少它不需要你输入密码),详见如何在没有密码的情况下使用 sudo 运行应用程序?

  • 如果您想采用以明文形式写下密码的方法,请考虑将命令链接在一起并用来sh执行它:

    echo password | sudo sh -c "apt-get update && apt-get upgrade"
    

    这样,sudo只需要输入一次密码,并sh以 root 身份执行。然后,任何由其运行的程序sh都会自动以 root 身份运行。

  • 最后,您可以将密码两次传递给单独的程序:

    echo password | sudo apt-get update && echo password | sudo apt-get upgrade
    

答案2

我很确定 sudo 的超时时间是 15 分钟。

你可以改变它

sudo visudo

将超时添加到此行

Defaults        env_reset

所以20分钟

Defaults        env_reset,timestamp_timeout=20

https://help.ubuntu.com/community/RootSudoTimeout

答案3

我现在在用手机,所以无法写出详细的答案。不过,还有另一种可能,可能是一个合适的折衷方案。

您可以将 sudo 配置为不要求输入 apt-get 命令的密码。您可以使用 visudo 命令进行设置。由于我现在无法访问我的 Linux 机器,我无法告诉您如何操作,但您可以尝试阅读 sudoers、visudo 的手册页以及这些页面引用的任何内容。

警告:这样做可能会让任何人都运行任何 apt-get 命令。您必须判断此方法的便利性是否大于额外的安全风险。

相关内容