【问题标题】:How to run the cron job as a user instead of root user [closed]如何以用户而不是 root 用户身份运行 cron 作业 [关闭]
【发布时间】:2011-12-31 23:43:07
【问题描述】:

我有几个 bash 脚本可以添加到指定时间的 cron 作业中,但它需要以 root 用户身份执行。我正在尝试运行这些脚本,即 crob 作业,但它需要 root 用户权限,因为我在 root 用户受限的 ubuntu ec2 实例中运行此作业。以 root 用户身份运行这些脚本的解决方法是什么。

谢谢

【问题讨论】:

  • 我不确定是否理解这个问题。也许supersudo 命令可以帮助你?
  • 这属于 ServerFault,而不是 StackOverflow。
  • 您已经存在了足够长的时间,知道这不属于这里。如果您想知道如何在不同的用户帐户下在 linux 上 cron 执行 bash 脚本,请尝试 Unix & Linux。如果 EC2 在其中发挥了重要作用,请尝试 Server Fault

标签: linux bash cron


【解决方案1】:

您可以使用setuid flag 使脚本以root 身份执行,这使脚本以其所有者身份运行:

chmod +s yourscript
chown root yourscript

只需让 yourscript 以 root 身份运行您想运行的任何命令。

请注意,使用此方法,任何用户都可以运行脚本。

【讨论】:

  • 出于安全原因,许多平台会忽略脚本文件中的setuid
【解决方案2】:

Basile 的评论是正确的。如果你想在 Ubuntu 中以root 运行某些东西,请使用sudo

如果您想以超级用户权限自动执行脚本(或某些命令)而无需输入密码,请运行

sudo visudo

编辑sudoers 文件。让sudo 停止要求输入特定脚本(或命令)的密码

username ALL = NOPASSWD: /path/to/script

其中username 是调用 sudo 的用户的名称。

【讨论】:

    【解决方案3】:

    有几种可能:

    1) 将脚本添加到 root 的 crontab。为此,您必须通过 sudo su -su - 成为 root,然后使用 crontab -e 添加 cron 作业

    2) 允许非 root 用户使用 crontab,并使用 crontab -e 将 cron 作业添加到该用户的 crontab 中 设置脚本的 set-uid 标志并将所有权更改为 root,因此它将以 root chmod +s scriptname; chown root scriptname

    身份执行

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-30
      • 1970-01-01
      • 2013-08-10
      • 2020-05-16
      • 1970-01-01
      • 1970-01-01
      • 2017-04-07
      • 1970-01-01
      相关资源
      最近更新 更多