例如:
sudo rm somefile
#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
评论
欢迎Sayem Siam,看看这个问题的答案askubuntu.com/questions/2368/how-do-i-setup-cron-job。我想您之前在AU上问过您的问题我正在尝试执行需要密码的sudo,但是我该如何从cron文件中提供密码
@sayemsiam您不需要放入sudo,只需编辑根crontab。
查看此答案。