0

我有一组更新命令,我需要根据我大学的安全政策定期运行这些命令。这些是命令:

sudo apt-get clean

sudo apt-get 更新

sudo apt-get -y --purge dist-upgrade

现在我想做的是自动化这个过程。我要解决的方法是

  1. 将所有这些命令设置为 shell 脚本。
  2. 每天早上 6 点将脚本作为 cronjob 运行。

我编写了一个名为“update_script.sh”的 shell 脚本并将其保存在主文件夹中。脚本内部是三个不带 sudo 选项的命令。然后我将脚本的所有权更改为root。

接下来我修改了 visudo 文件以允许该脚本在没有密码的情况下运行。

(我按照此链接中的步骤操作)

现在我的问题是:

当我尝试将此更新脚本作为“sh update_script.sh”运行时,它无法运行它。只有当我执行“sudo sh update_script.sh”时,它才能完成这项工作。

我在哪里搞砸了设置?

4

1 回答 1

2

好吧,你描述它的方式,你已经让自己执行

update_script.sh

用须藤。

这意味着您需要调用脚本(根据我的理解由您的用户 crontab)

sudo update_script.sh 

这意味着脚本由 root 执行,并且脚本中的所有命令也以 root 执行。

如果您只想在没有 sudo 的情况下执行脚本本身,但允许自己以 root 身份使用脚本执行命令(在您的情况下是 apt-get 命令),您必须添加命令(在您的情况下再次是 apt-get ) 到 sudoers 文件。但正如我所看到的,在你的情况下,你应该只用 sudo 调用整个脚本。

于 2013-10-24T18:55:41.797 回答