为什么cron在我的脚本中默默地无法运行sudo东西?
我有一个从非特权用户的crontab运行的脚本,该脚本使用调用了一些命令sudo。除非不是。脚本运行正常,但sudo'ed命令无提示地失败。 该脚本可以作为相关用户从shell完美运行。 Sudo不需要密码。有问题的用户已在中(root) NOPASSWD: ALL授予访问权限/etc/sudoers。 Cron正在运行并执行脚本。添加简单的代码date > /tmp/log会在适当的时间产生输出。 这不是权限问题。同样,脚本确实得到执行,但不是sudo'ed命令。 这不是路径问题。运行env从脚本内被运行显示正确的$PATH变量,包括路径须藤。使用完整路径运行它没有帮助。正在执行的命令被赋予完整路径名。 尝试捕获包括STDERR的sudo命令的输出不会显示任何有用的信息。添加sudo echo test 2>&1 > /tmp/log到脚本会生成空白日志。 sudo二进制文件本身可以很好地执行并识别它具有权限,即使从脚本内的cron运行时也是如此。添加sudo -l > /tmp/log到脚本将产生输出: 用户ec2-user可以在此主机上运行以下命令: (root)NOPASSWD:ALL 使用show检查命令的退出代码$?正在返回错误(退出代码:)1,但似乎没有错误产生。简单的命令/usr/bin/sudo /bin/echo test将返回相同的错误代码。 还有什么可能发生? 这是最近创建的运行最新Amazon Linux AMI的虚拟机。crontab属于用户ec2-user,而sudoers文件是默认的发行版。