【问题标题】:About setting permissions for scripts关于设置脚本的权限
【发布时间】:2013-10-24 16:31:57
【问题描述】:

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

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 文件以允许该脚本在没有密码的情况下运行。

(我按照link中的步骤操作)

现在我的问题是这样的:

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

我在哪里搞砸了设置?

【问题讨论】:

  • 可能是因为您不允许自己在没有密码的情况下运行 apt-get

标签: linux bash shell unix ubuntu


【解决方案1】:

嗯,按照你描述的方式,你已经允许自己执行了

update_script.sh

使用 sudo。

这意味着您需要使用

调用脚本(根据我的理解由您的用户 crontab 调用)
sudo update_script.sh 

也就是说脚本是root执行的,脚本中的所有命令也都是root执行的。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-16
    • 2010-10-20
    • 2010-09-08
    • 1970-01-01
    • 2021-04-17
    • 1970-01-01
    • 2015-11-11
    • 1970-01-01
    相关资源
    最近更新 更多