Windows Sensu 客户端 - 运行批处理文件时偶尔会出现“访问被拒绝”错误

Windows Sensu 客户端 - 运行批处理文件时偶尔会出现“访问被拒绝”错误

我们在多个 2008 R2 系统上运行 Windows Sensu 客户端。我们的一项检查调用批处理文件来收集一些信息并报告。我们偶尔会收到这些检查的“未知:意外错误:拒绝访问 (5)”消息 - 没有标准频率,没有相关性...... 下一次检查运行正常,没有问题。

我已经通过堆栈跟踪了调用,并且Sensu Ruby 代码) 生成“cmd.exe /c "/path/to/batch.bat 参数"”的子进程,没有任何问题。我可以通过删除对批处理文件本身的所有 NTFS 访问权限来重现此问题。如果您在删除这些权限的情况下运行 cmd /c batch.bat,它将返回相同的“访问被拒绝 (5)”错误。

好的,太棒了,访问文件时出现问题。为什么?我已经运行了进程监视器跟踪,没有发现进程有任何错误:ruby 加载,cmd.exe 被调用,cmd.exe 读取文件时没有出现任何明显错误,然后它返回检查结果为访问被拒绝。这是什么情况……?

我没什么主意了。如果有帮助的话,请提供一些额外的背景信息:ruby 二进制文件以 32 位运行;Sensu 客户端是 Sensuapp 网站上的最新版本;系统正在运行 System Center Endpoint Protection。我遗漏了什么??

答案1

这原来是 ChildProcess Ruby 库中的一个错误,以及它如何处理将 Windows 进程分配给作业对象(竞争条件)。一旦我清理代码,我将与作者分享修复方法。

相关内容