问题

问题

在我的登录会话之后,我希望 Ubuntusudo apt-get update & apt-get dist-upgrade系统地/自动地执行。必须打开终端,以便我可以看到每个执行的输出。特别是,我希望在执行命令时被要求输入“y/n” apt-get dist-upgrade。我不想输入我的密码:因此,Ubuntu 必须使用它sudo而不是我作为执行的输入。

所涉及的修改必须独立于 Ubuntu 的任何升级和迁移。

问题

我应该编辑哪个bash文件以及以何种方式编辑?

答案1

无需密码即可进行 Sudo

您可以告诉 sudo 让您无需密码即可执行命令。

此处得票最多的答案

打开终端窗口并输入:

sudo visudo

在文件底部输入以下内容:

$USER ALL=(ALL) NOPASSWD: ALL

您还可以使它只允许一个用户的 apt 无需密码工作,并且只允许 apt 通过添加以下内容代替上述内容:

username ALL = NOPASSWD: /usr/bin/apt

将“用户名”替换为您的用户名。您可能需要重新启动才能使这些更改生效。

我强烈建议使用单用户/应用程序解决方案,因为这比允许所有 sudoers 完全使用 sudo 而无需密码要安全得多……这可能是一个严重的安全问题,尤其是如果有人获得了对您计算机的物理访问权限。一般来说,如果这台计算机包含敏感数据,您将希望放弃任何类型的无密码 sudoing。

启动时运行命令

  • GUi:在活动窗口中搜索“启动”并运行“启动应用程序”,单击添加按钮并使用以下命令创建

或者

  • 命令行:在末尾添加以下命令~/.profile

以下命令将打开终端并运行更新:

gnome-terminal -- bash -c "sudo apt update && sudo apt dist-upgrade; read line"

根据需要命名和注释(gui)并保存。现在,当您登录时,终端将打开并运行您的升级命令。您不需要输入密码,但您必须确认升级。

窗口将保持打开状态直到您按下回车键。

现在您有了这个,您可能想要去Software & Updates禁用自动检查更新,因为这个新脚本会为您完成此操作。

在此处输入图片描述

答案2

这很容易,尽管我想知道应用了哪些更新,所以我更喜欢手动拥有最终的决定权。

无论如何,您需要知道的基本知识是如何sudo从脚本运行命令。可以使用以下方法完成:

echo password | sudo -S

或者使用更长更明确但等效的版本

echo password | sudo -u root --stdin

当然,您的密码在哪里password,并且参数-u是用户,在本例中是 root。

然后,请注意您的.profilebash 脚本在登录时运行。简而言之,将以下命令附加到您的.profile

echo password | sudo -S apt-get update
echo password | sudo -S apt-get -y upgrade

其中-y标记 toapt-get表示对所有问题都回答是。您的.profile应该在创建帐户时创建,但万一它已被删除,您可以从 复制默认值/etc/skel/.profile

最后,为了安全起见,您可能需要chmod 600 .profile保护您的密码。

相关内容