在我的登录会话之后,我希望 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。
然后,请注意您的.profile
bash 脚本在登录时运行。简而言之,将以下命令附加到您的.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
保护您的密码。