如何使用sudo命令运行cron作业

是否可以运行需要sudo命令的cron作业?

喜欢:

sudo rm somefile 

我不会深入了解这是多么糟糕的主意; 简单地说,在crontab中运行sudo需要将密码以明文存储在某处。

这是个坏主意。


以下是通过cron运行管理任务的首选方法。 因为你真的不需要在crontab中编写sudo ,如果你正在修改root的crontab。

使用root的crontab

运行以下命令:

 sudo crontab -e 

这打开了root的crontab。 sudo不必在此上下文中运行您的命令,因为它无论如何都将以root身份调用。

因此,您只需将以下内容附加到root的crontab即可。

 @hourly rm somefile 

现在,如果你绝对想要不安全并冒险使用密码,以下内容将从你自己的crontab运行你的命令,并在sudo提示时自动输入你的密码。

同样, 不建议这样做


在您自己的crontab中,像这样编写命令:

 @hourly echo "password" | sudo -S rm somefile 

这里明显的缺点是,如果有人访问您的crontab,您的密码将以纯文本forms读取。

你不应该这样做。

如果您从其中一个cron目录( /etc/cron.* )中放入脚本,那么您不需要使用sudo,因为它以root身份运行。

如果您使用的是crontab,那么您将需要使用root的crontab。 这将以root身份运行,也不需要sudo。

 sudo crontab -e 

在终端中运行以下命令

 sudo visudo 

在文件末尾添加以下行:

 vidyadhar ALL= NOPASSWD: /bin/rm 

在上面的示例中,vidyadhar是用户名,如果您通过vidyadhar运行rm命令,它将不会要求输入密码。