如何在 Ubuntu 16.04 的 cronjobs 中运行 SUDO... 命令?

Shy*_*Shy 2 permissions command-line bash scripts cron

某些终端命令只能以 root 用户身份运行。如果我们尝试在没有sudo关键字的情况下执行它们,它们会因Permission denied错误而失败。一个例子是在某些位置创建目录/文件夹的命令。

我需要在我的 Ubuntu 16.04 中运行一个这样的命令作为 cron 作业的一部分。通常我可以sudo在终端中使用关键字运行命令,然后会提示我输入root用户的密码,然后命令将成功执行。

但是现在我必须在我的crontab文件中输入此命令作为 cron 作业的一部分,我该怎么做?如何将这样的命令作为 cronjob 的一部分运行?

Ali*_*our 5

只需crontab -eroot用户身份运行。这将以root权限运行您的命令,无需sudo在它之前添加 。

但是,您无法使用root用户登录,并且需要作为 cron 作业执行您的工作,您应该在 cron 文件中指定完整路径:

 $ * * * * * /usr/bin/sudo /your/command
Run Code Online (Sandbox Code Playgroud)

您也可以NOPASSWD/etc/sudoers文件中的命令前面添加以root身份运行命令但没有密码。

  • 不需要 `sudo`,因为任务已经以 root 身份运行。 (3认同)

fkr*_*iem 5

另一种选择是将其放在系统范围的 crontab 中/etc/crontab(或放在 中的文件中/etc/cron.d),您可以在其中指定每个任务运行的用户:

* * * * * root mkdir /foo/bar
Run Code Online (Sandbox Code Playgroud)