如何以特定用户身份运行 cron 作业?

mor*_*ous 79 security cron permissions cronjob ubuntu

我想在我的机器上以特定用户身份运行 cron 作业。我如何指定要运行的 cron 作业的用户?。

cron 作业将在服务器上运行(在 Ubuntu 10.0.4 上运行)。“用户”是专门为执行特定服务器端任务而创建的用户。这些“用户”有以下共同点:

  • 无法登录系统
  • 限制访问特定文件夹/文件

Dae*_*yth 92

假设您不能只是登录并将其添加到该用户的 crontab,请将文件放入/etc/cron.d. 它应该被格式化为一个普通的 cronjob,但有一个额外的字段。命令运行前和计时后,放置用户。您应该能够在您的系统上找到已经存在的示例。

例子:

#<timing>   <user> <command>
11 * * * *  root   /usr/lib/command
Run Code Online (Sandbox Code Playgroud)

  • 我想最好的解决方案是只用 `crontab -u &lt;user&gt; -e` 把所有东西都放在一个地方,你可以作为 root 来做。不过,我喜欢按功能对我的 cron 作业进行分组,而不仅仅是按用户分组,因此这对我来说是更可取的解决方案。 (3认同)
  • 加上我的一个,这是做你想做的最好的方法。更准确地查看 /etc/crontab 文件,您会看到,在时间模板之后和命令之前,那里写着“root”。这意味着“root”运行这些命令。只需添加您自己的时间表,而不是“root”使用任何用户。另外,请注意,如果您使用每个用户的 crontab(如 Eric D 所建议的),您可能会失去系统范围的 crontab(/etc/crontab 和 /etc/cron.d)的功能。 (2认同)

Eri*_*his 45

以 root 身份编辑 user1 的 cron:

crontab -u user1 -e
Run Code Online (Sandbox Code Playgroud)

您还可以使用以下命令启动命令:

su user1 -c foo bar
Run Code Online (Sandbox Code Playgroud)

但通常,脚本本身在以 root 身份启动时会减少自己的访问权限。