我在 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
经常会错过sshd
s 的子进程。发生这种情况时, cgrouptasks
中nogpu
包含sshd
进程,但不包含其子(shell)进程。
我读这里快速生成的子进程可能位于错误的组中,但在许多机器上这种情况太频繁了。添加规则root:sshd
没有帮助。
有没有办法让cgrulesengd
捕获子进程更加扎实?
谢谢。
添加:我当前的解决方法是使用ForceCommand
insshd_config
来包装SSH_ORIGINAL_COMMAND
或 shell 并将其自身添加到 cgroup (我没有使用,pam_exec.so
因为它不能是 shell 进程的父进程)。但我还是想知道cgrulesengd
它本身是否可以更加一致。