Shy*_*Shy 2 permissions command-line bash scripts cron
某些终端命令只能以 root 用户身份运行。如果我们尝试在没有sudo关键字的情况下执行它们,它们会因Permission denied错误而失败。一个例子是在某些位置创建目录/文件夹的命令。
我需要在我的 Ubuntu 16.04 中运行一个这样的命令作为 cron 作业的一部分。通常我可以sudo在终端中使用关键字运行命令,然后会提示我输入root用户的密码,然后命令将成功执行。
但是现在我必须在我的crontab文件中输入此命令作为 cron 作业的一部分,我该怎么做?如何将这样的命令作为 cronjob 的一部分运行?
只需crontab -e以root用户身份运行。这将以root权限运行您的命令,无需sudo在它之前添加 。
但是,您无法使用root用户登录,并且需要作为 cron 作业执行您的工作,您应该在 cron 文件中指定完整路径:
$ * * * * * /usr/bin/sudo /your/command
Run Code Online (Sandbox Code Playgroud)
您也可以NOPASSWD在/etc/sudoers文件中的命令前面添加以root身份运行命令但没有密码。
另一种选择是将其放在系统范围的 crontab 中/etc/crontab(或放在 中的文件中/etc/cron.d),您可以在其中指定每个任务运行的用户:
* * * * * root mkdir /foo/bar
Run Code Online (Sandbox Code Playgroud)