差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
| linux:kernel:cgroup:cgroup_management_daemon [2013/12/11 10:29] – tenforward | linux:kernel:cgroup:cgroup_management_daemon [2013/12/11 11:11] (現在) – tenforward | ||
|---|---|---|---|
| 行 196: | 行 196: | ||
| ucred over the unix socket, and therefore translated to init | ucred over the unix socket, and therefore translated to init | ||
| userns. | userns. | ||
| + | |||
| + | * r が cgroup /x に対して uid Y への chown をリクエストした場合,Y | ||
| + | は Unix socket 経由で ucred に渡される.そのため,init userns に | ||
| + | 変換される. | ||
| + | |||
| * if r requests setting a limit under /x, then | * if r requests setting a limit under /x, then | ||
| . either r must be root in its own userns, and UID(/x) be mapped | . either r must be root in its own userns, and UID(/x) be mapped | ||
| 行 206: | 行 211: | ||
| (see devices.allow/ | (see devices.allow/ | ||
| which don't support setns for pid. | which don't support setns for pid. | ||
| + | |||
| + | * r が /x 以下の制限を設定するリクエストをした場合, | ||
| + | - r は自身の userns で root であり,UID(/ | ||
| + | ピングされていなければならないか,UID(r) == UID(/x) でなければ | ||
| + | ならないかのどちらかである. | ||
| + | - /x は / であってはならない (厳密に必要ではない.全てのユーザが | ||
| + | / が cgroup の特別なレイヤーであることを知っている) | ||
| + | - setns(UIDNS(r)) が動かない.これはカーネル内の capable() チェッ | ||
| + | クを満たさないためである.それゆえ,特権チェックを我々自身が行 | ||
| + | う必要がある.そして,ホストの root ユーザとして書き込みを行う | ||
| + | (see devices.allow/ | ||
| + | できない古いカーネルをサポートする必要がある. | ||
| + | |||
| * If r requests action on victim V, it passes V's pid in a ucred, | * If r requests action on victim V, it passes V's pid in a ucred, | ||
| so that gets translated. | so that gets translated. | ||