如何使用 sudo 命令运行 cron 任务

如何使用 sudo 命令运行 cron 任务

是否可以运行计划任务需要的工作须藤命令?

喜欢:

 sudo rm somefile

答案1

我不会谈论这个主意有多坏;简单地说,sudo在 crontab 中运行需要将您的密码以纯文本形式存储在某个地方。

这是一个坏主意。


以下是通过 cron 运行管理任务的首选方法。因为您实际上不需要sudo在 crontab 中写入,如果您正在修改 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,您的密码将以纯文本形式被读取。

你不应该这么做。

答案2

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

如果你正在使用 crontab,那么你将需要使用 root 的 crontab。这将以 root 身份运行它,并且也不需要 sudo。

sudo crontab -e

答案3

在终端中运行以下命令

sudo visudo

在文件末尾添加以下行:

vidyadhar  ALL= NOPASSWD: /bin/rm

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

答案4

没人提到有带 setuid 位的可执行脚本?我也知道这可能是一个安全漏洞(不要割伤自己,抽屉里有锋利的刀,请严格控制权限),但感觉比在 root crontab 中工作更安全。例如,我想每晚或每周进行碎片整理/fstrim,即使我不在场。

另一种选择是让脚本循环运行,休眠直到合适的时间,然后使用 sudo 启动。

相关内容