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

时间:2011-11-18 06:21:56

标签: linux bash cron

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

谢谢

3 个答案:

答案 0 :(得分:10)

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

chmod +s yourscript
chown root yourscript

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

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

答案 1 :(得分:7)

有几种可能性:

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

答案 2 :(得分:2)

Basile对他的评论是正确的。如果您想在Ubuntu中以root运行某些内容,请使用sudo

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

sudo visudo

编辑sudoers文件。要使sudo停止询问特定脚本(或命令)的密码,请插入

username ALL = NOPASSWD: /path/to/script

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