如何以用户而不是 root 用户身份运行 cron 作业 [关闭]

Posted

技术标签:

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

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

谢谢

【问题讨论】:

我不确定是否理解这个问题。也许supersudo 命令可以帮助你? 这属于 ServerFault,而不是 ***。 您已经存在了足够长的时间,知道这不属于这里。如果您想知道如何在不同的用户帐户下在 linux 上 cron 执行 bash 脚本,请尝试 Unix & Linux。如果 EC2 在其中发挥了重要作用,请尝试 Server Fault。 askubuntu.com/questions/173924/… 【参考方案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

身份执行

【讨论】:

以上是关于如何以用户而不是 root 用户身份运行 cron 作业 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Docker 容器中以非 root 用户身份启动 cron?

我可以以不同于 root 的用户身份运行 cloud init 吗?

可以以 root 身份而不是 ubuntu 用户身份 SSH 到 EC2 ubuntu 服务器

如何以编程方式获得 root 权限?

如何以root用户身份运行Google Chrome? [关闭]

无法以 root linux 用户身份运行 mysql 命令