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

例如:

 sudo rm somefile


评论

欢迎Sayem Siam,看看这个问题的答案askubuntu.com/questions/2368/how-do-i-setup-cron-job。我想您之前在AU上问过您的问题

我正在尝试执行需要密码的sudo,但是我该如何从cron文件中提供密码

@sayemsiam您不需要放入sudo,只需编辑根crontab。

查看此答案。

#1 楼

我不会说这是一个坏主意。简而言之,在crontab中运行sudo要求您的密码以纯文本格式存储在某处。

这是一个坏主意。


以下是通过cron运行管理任务的首选方法。由于您实际上不需要在crontab中编写sudo,因此,如果您要修改root的crontab。

使用root的crontab

运行以下命令:

sudo crontab -e


这会打开root的crontab。在这种情况下,不需要运行sudo,因为无论如何它都会被作为root调用。现在,如果您绝对希望不安全并冒险使用密码,则以下操作将从您自己的crontab中运行您的命令,并在sudo提示时自动输入密码。

同样,不建议这样做。




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

@hourly rm somefile


这里的明显缺点是,如果任何人访问您的crontab,您的密码将以纯文本格式可读。

您不应这样做。

评论


很高兴它有效!只是要警惕您留下的任何安全漏洞。它们可能稍后会回来困扰您。

– SirCharlo
2012年8月9日18:15

@SirCharlo为什么使用root的用户crontab而不是系统范围的crontab / etc / crontab?

– Eliah Kagan
2012年8月10日,下午3:47

@以利亚为什么不呢?

– SirCharlo
2012年8月11日下午4:43

这个答案没有标记,因为它掩盖了sudoers文件中可用的细微之处,例如不需要密码的sudo组。

–brent
18年1月9日在21:13

非常非常有用的一点,谢谢您的大力帮助。

–纳赛尔·曼苏里(Nasser Mansouri)
18年8月28日在8:46

#2 楼

如果要从cron目录之一(/etc/cron.*)放置脚本,则无需使用sudo,因为它是作为root运行的。

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

sudo crontab -e


评论


我还将命令放在/etc/cron.hourly/something中。这就是这些目录的用途。

– John S Gruber
2012年8月23日15:37

不,您可以将其放在/etc/cron.SOMETHING/SCRIPT中,但我不会两者都做。两者都将提供大致相同的功能,尽管使用crontab可以使您对运行的频率/时间有更多的控制权。

–tgm4883
2012年8月23日在17:40

我应该明确指出,我的意思是作为替代。谢谢。

– John S Gruber
2012年8月23日在17:43

#3 楼

在终端

sudo visudo


中运行以下命令:在文件末尾添加以下行:

vidyadhar  ALL= NOPASSWD: /bin/rm


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

评论


嗯。然后从该用户运行任何恶意命令,例如sudo rm -rf'slash'(不运行该命令),都不需要密码。

– SirCharlo
2012年8月9日在18:09



是的,我知道。您的方法很好。但是我正在使用上述方法授予其他用户停止/启动某些服务的权利。

– Vidyadhar
2012年8月9日在18:13

这是一个非常糟糕的主意。请不要这样做。

– bkanuka
2014年6月29日在1:38

也许vidyadhar ALL = NOPASSWD:/ bin / rm somefile会更安全。

– Wernfried Domscheit
16年7月28日在8:28

这是一个可怕的想法。您授予了rm总括式sudo权限。取而代之的是,对您的命令(包括rm或该脚本中的其他命令)赋予sudo权限,使其可执行,然后再对该脚本赋予sudo权限。 <用户名> ALL =(全部)NOPASSWD:/ home / <用户名> / bin / <脚本>,这样会更安全。

– R J
18年7月1日在11:28