я знаю, как это сделать враппером к su, ещё посмотри в libcgroups, он вроде умеет перекидывать определенные программы в другие цгруппы, но с последним я не работал. Враппер пишится элементарно:
#!/bin/bash
mkdir /sys/fs/cgroups/mycgroup/${USER}
echo $$ > /sys/fs/cgroups/mycgroup/${USER}/tasks
su $@
да, будучи рутом пользователи могут двигать свои процессы по цгруппам, так что для полноценности нужно selinux правила поднимать, но тут я уже ничем не помогу :(
хотя более правильное направление это не враппер, а правило для pam, если случайно раскопаешь, как это делать верно, то пни меня. Ну и естественно нужно сначала свой именованный контроллер создать, чтобы системным не мешаться, как сделано в openrc.
Для всех su запущенный от всех пользователей помещать процесс su (и как следствие, всех детей) в группу sugroup
это не совсем точное утверждение, он будет помещать процесс su и его тех детей, которых процесс su породит после того, как он будет перемещен (для su ещё покатит и то если не сделать su и сразу же новый шел, в этом случае race conduition и как повезет), а с sudo вообще шансы близки к 0. Ну и работать надо с отдельной цгруппой, но это уже просто сделать.