Ubuntuのcgroup-v2でroot以外の権限でcgroup.procsにPIDを追加する方法

Ubuntuのcgroup-v2でroot以外の権限でcgroup.procsにPIDを追加する方法

からcgroupを作成しました/sys/fs/cgroup。電話しましたが、root以外のユーザーが制御するtestGrp必要があるため、cgroupディレクトリ全体の所有権を変更しました。cgroup

/sys/fs/cgroup$ sudo chown -R normUser testGrp/

testGrp内部のすべてのファイルが新しいユーザーの所有であることを確認しましたが、これはnormUser実際には通常の更新のようにコントローラファイルを変更できますio.maxcgroup.procs

/sys/fs/cgroup/testGrp$ ll cgroup.procs 
-rw-r--r-- 1 normUser root 0 Aug 21 14:13 cgroup.procs
/sys/fs/cgroup/testGrp$ whoami
normUser 
/sys/fs/cgroup/testGrp$ echo $$ > cgroup.procs 
bash: echo: write error: Permission denied

cgroupの所有権を変更すると、root権限の問題が解決されると思いましたが、実際には役に立ちませんでした。

それでは、rootユーザーを使用せずにcgroupを制御する方法は何ですか?

答え1

カーネルが使用する規則は、プロセスをcgroup Aからcgroup Bに移動する前に、そのプロセスを属するcgroupに移動する権限が必要です。共通の祖先AとBの両方。

systemdを使用し、初期cgroupが下にある場合、/user.slice/user-xxxx.slice/最も近い共通祖先はで/testGrpあり、/実際には権限がありません。

実際にディストリビューションでsystemdを使用している場合は、systemdに組み込まれているcgroup階層管理を使用することをお勧めします。つまり、.sliceユニットを作成して階層を定義し、プロセスを.scopeユニットを介して.scopeユニットに移動しますsystemd-run [--user]

関連情報