我想在crontab(在我的本地计算机上)添加一行,每五分钟运行一次。我的问题是我要使用的命令需要sudo:
sudo indexer --config /usr/local/etc/sphinx.conf --all --rotate
有没有办法在不使用sudo且不提示输入密码的情况下运行命令?
谢谢!
答案 0 :(得分:3)
将它放在root
的crontab中sudo crontab -e
你可以放
indexer --config /usr/local/etc/sphinx.conf --all --rotate
此crontab中的所有命令都将以root身份执行。如果您只是crontab -e
作为当前用户,则会以用户权限执行。
答案 1 :(得分:2)
使用cmd visudo(此cmd需要root权限)将命令附加到sudoer文件列表,如下所示:
<YOUR_USER_NAME> ALL = NOPASSWD:<ABSOLUTE-PATH-TO-CMD>
照顾ABSOLUTE-PATH-TO-CMD,它可能会成为一个安全漏洞。
答案 2 :(得分:1)
将应用程序放在root的crontab中非常危险,除非该盒子能够很好地抵御黑客攻击。如果有人替换了二进制文件(包括库),那么你就走了!
更好的方法是将二进制文件访问的所有文件chown给非特权用户,并以非特权用户身份运行该作业。
应用程序使用的任何二进制文件都不应该被除root之外的任何人写入。
答案 3 :(得分:0)
以root身份运行它?还是狮身人面像用户?试着找出你需要运行哪个用户并将其添加到用户cron
答案 4 :(得分:0)
您可以配置sudo不要求密码。阅读男人sudoers如何做到这一点。搜索NOPASSWD字符串。