как предотвратить перемещение systemd процесса в другие контрольные группы при выполнении команды su

#systemd #pam #cgroups

Вопрос:

Systemd обеспечивает pam_systemd.so для модуля PAM и для многих команд, таких как su command, pam_systemd.so будет вызван, и процесс будет перенесен в группу, которой управлял systemd.

Как правило, если мы переместим процесс bash из связанного сеанса cgroup , созданного systemd under /sys/fs/cgroup/systemd/user.slice , в какую-либо другую группу, то systemd переместит новый процесс bash в новую группу с именем session-cxxxx.scope under /sys/fs/cgroup/systemd/user.slice после выполнения su команды.

Мы хотели бы управлять контрольными группами для набора процессов, созданных нами самими, как запретить systemd выполнять такие процедуры, не отключая pam_systemd в модуле PAM.

Например

корневой путь группы по умолчанию /sys/fs/cgroup -.

Когда вручную создается процесс «bash» с pid 12345 и идентификатором сеанса 99999, systemd создаст каталог session-99999.scope под /sys/fs/cgroup/systemd/user.slice/user-0.slice/ и поместит в него процесс 12345.

Для других рабочих групп, таких как процессор или память, процесс 12345 будет помещен в каталог eache user.slice в этих рабочих группах, ограниченных подсистемами

Если мы переместим процесс с pid 12345 в другую группу c из сеанса-99999.область, например:

Мы перемещаем его из /sys/fs/cgroup/systemd/user.slice/user-0.slice/session-99999.scope в /sys/fs/cgroup/systemd/ .

Для группы ЦП мы перемещаем ее форму /sys/fs/cgroup/cpu/user.slice в /sys/fs/cgroup/my_test_group .

Затем мы выполняем команду «su xxx», создаем новый bash с pid 13333, затем

Systemd создаст новую группу сеансов с именем session-cxxxxx.scope , например, session-c10010.scope под /sys/fs/cgroup/systemd/user.slice/user-0.slice/ и поместит в нее новый процесс 13333.

Для группы процессоров новый процесс 13333 будет помещен в user.slice вместо группы my_test_group.