Cgroup 规则引擎 (cgrulesengd) 丢失子进程

Cgroup 规则引擎 (cgrulesengd) 丢失子进程

我在 Ubuntu 16.04 和 14.04 机器上,试图阻止用户在带有 cgroup 规则引擎的 ssh 会话中使用 Nvidia GPU。

我目前的/etc/cgconfig.conf样子:

group nogpu {
  devices {
    devices.allow = "a *:* rwm";
    devices.deny = "c 195:* rwm";
  }
}

就像/etc/cgrules.conf

@groupname:sshd devices nogpu

问题是cgrulesengd经常会错过sshds 的子进程。发生这种情况时, cgrouptasksnogpu包含sshd进程,但不包含其子(shell)进程。

我读这里快速生成的子进程可能位于错误的组中,但在许多机器上这种情况太频繁了。添加规则root:sshd没有帮助。

有没有办法让cgrulesengd捕获子进程更加扎实?

谢谢。

添加:我当前的解决方法是使用ForceCommandinsshd_config来包装SSH_ORIGINAL_COMMAND或 shell 并将其自身添加到 cgroup (我没有使用,pam_exec.so因为它不能是 shell 进程的父进程)。但我还是想知道cgrulesengd它本身是否可以更加一致。

相关内容