ProcessSet
代表一组进程。
标记属性
相对于完整性监控规则所监控的实体的属性,以下属性是标记本身的 XML 属性。
属性 | 描述 | 必需 | 缺省值 | 允许值 |
onChange | 将受实时监控 | 否 | false | true、false |
实体集属性
以下是可由完整性监控规则监控的实体的属性。
- CommandLine:由 "ps -f" (Unix)、"ps w" (Linux) 或 Process Explorer (Windows) 显示的完整命令行。
- Group:在之下运行进程的组。在 Unix 下,该属性指进程的“有效”组 ID,可以随时间更改(如果进程丢弃权限或者切换其有效组凭证)。在 Windows 上,该属性是由 Win32 API GetTokenInformation(带有 TokenPrimaryGroup 的 TokenInformationClass)返回的进程的当前主组。这是新创建的对象的缺省主组 SID。除主组之外,进程通常具有一个或多个组凭证与之关联。客户端不监控这些附加的组凭证 — 可以在 Process Explorer 的 process 属性的“安全”选项卡上查看这些凭证。
- Parent:创建此进程的进程的 PID。
- Path:进程的二进制文件的完整路径。在 Solaris 8 和 9 或 HP-UX 上不可用。在 Windows 上,该路径来自 GetModuleFileNameEx() API。在 Linux 和 Solaris 10 上,它来自分别读取符号链接 /proc/{pid}/exe 或 /proc/{pid}/path/a.out。
- Process:进程二进制文件的简短名称(无路径)。例如,对于 "c:\windows\notepad.exe",该属性为 "notepad.exe",对于 "/usr/local/bin/httpd",为 "httpd"。
- Threads:当前在进程中执行的线程数。在 HP-UX 上不可用。
- User:在之下运行进程的用户。在 Unix 下,该属性指进程的“有效”用户 ID,可以随时间更改(如果进程丢弃权限或者切换其有效用户凭证)。
速记属性
- STANDARD:CommandLine、Group、Parent、Path(如果可用)、Process User
"Key" 的含义
Key 是 "Process" 属性(可执行文件的简短名称)和 PID 的组合。将 PID 附加到中间带有路径分隔符的名称,例如,Windows 上的 notepad.exe\1234 和 Unix 上的 httpd/1234。使用路径分隔符是为了使 key="abc/*" 的包含或排除匹配能够按预期工作。
子元素
- Include
- Exclude
有关 include 的允许属性和子元素的一般说明,请参阅完整性监控规则语言。此处仅包含与该 EntitySet 类相关的包含和排除的特定信息。
ProcessSet 的包含和排除特殊属性:
以下示例将监控正在运行的进程集是否具有 notepad.exe(不论 PID 如何)。
<ProcessSet>
<include key="notepad.exe\*" />
</ProcessSet>
可将进程的各种其他属性用于包含和排除功能测试。功能测试支持带有通配符 * 和 ? 的 Unix 全局样式,且不存在规范化的路径分隔符或其他字符 — 它是与属性值的简单全局样式匹配。
CommandLine
检查与进程的 commandLine 属性的通配符匹配。以下示例将监控命令行匹配 "*httpd *" 的所有进程:
<ProcessSet>
<include commandLine="*httpd *" />
</ProcessSet>
Group
检查与进程的 group 属性的通配符匹配。使用组名的文本版本,而不是数字形式:使用 "daemon" 而不是 "2" 来测试 Linux 上的 daemon 组。以下示例将监控以组 root、daemon 或 lp 身份之一运行的所有进程:
<ProcessSet>
<include group="root" />
<include group="daemon" />
<include group="lp" />
</ProcessSet>
Path
检查与进程的 path 属性的通配符匹配。path 属性在某些平台上不可用。以下示例将监控二进制文件位于 System32 下的所有进程:
<ProcessSet>
<include path="*\System32\*" />
</ProcessSet>
User
检查与进程的 user 属性的通配符匹配。使用用户名的文本版本,而不是数字形式:使用 "root" 而不是 "0"(零)来测试 Unix 上的超级用户。以下示例将监控以内置系统用户身份(例如,NT AUTHORITY\SYSTEM、NT AUTHORITY\LOCAL SERVICE、NT AUTHORITY\NETWORK SERVICE)之一运行的所有进程:
<ProcessSet>
<include user="NT AUTHORITY\*" />
</ProcessSet>