Man page - pam_cgfs(8)

Packages contains this manual

Available languages:

en ja

Manual

pam_cgfs

NAME
SYNOPSIS
説 明
オ プ シ ョ ン
MODULE TYPES PROVIDED
返 り 値
フ ァ イ ル

SEE ALSO

NAME

pam_cgfs - 非 特 権 の LXC コ ン テ ナ の た め の cgroup を 管 理 す る

SYNOPSIS

pam_cgfs.so {-c kernel_controller,name=named_controller }

説 明

LXC は LXC 1.0 以 降 、 完 全 な 非 特 権 コ ン テ ナ を サ ポ ー ト し て き ま し た 。 完 全 な 非 特 権 コ ン テ ナ は 安 全 な コ ン テ ナ で あ り 、 一 般 ユ ー ザ ( 非 root) で 実 行 で き ま す 。 こ れ は ホ ス ト 上 の 特 権 の な い UID と GID の 範 囲 を 、 そ れ と は 異 な る コ ン テ ナ 内 の UID と GID の 範 囲 に マ ッ ピ ン グ す る ユ ー ザ 名 前 空 間 を 使 う こ と で 実 現 し て い ま す 。 こ れ は 、 コ ン テ ナ 内 の UID 0 (root) が 、 コ ン テ ナ の 外 で は 1000000 の よ う な 特 権 の な い ユ ー ザ ID に マ ッ ピ ン グ さ れ 、 自 身 の 所 有 す る リ ソ ー ス に 対 し て の み 権 限 を 有 す る こ と を 意 味 し ま す 。

完 全 な 非 特 権 コ ン テ ナ の cgroup 管 理 は 、 こ の よ う な コ ン テ ナ が 使 用 す る リ ソ ー ス を 制 限 す る と い う こ と で す 。 例 え ば 、 コ ン テ ナ の CPU 使 用 量 を 制 限 し た り 、 コ ン テ ナ 内 で 起 動 す る プ ロ セ ス の 数 を 制 限 し た り 、 コ ン テ ナ が 消 費 で き る メ モ リ を 制 限 し た り と い う こ と で す 。 完 全 な 非 特 権 コ ン テ ナ は 一 般 ユ ー ザ に よ っ て 実 行 さ れ 、 コ ン テ ナ 間 の リ ソ ー ス 消 費 を 制 限 、 管 理 す る 必 要 が あ る と い う こ と は 明 ら か で す 。 し か し 、 非 特 権 で の cgroup 管 理 は ほ と ん ど の init シ ス テ ム で は 簡 単 で は あ り ま せ ん 。 そ こ で 、 pam_cgfs.so が 誕 生 し た の で す 。

pam_cgfs.so モ ジ ュ ー ル は 、 純 粋 な cgroupfs v1 ( /sys/fs/cgroup/$controller ) ツ リ ー と 、 コ ン ト ロ ー ラ の い く つ か が cgroupfs v1 ツ リ ー ( /sys/fs/cgroup/$controller ) で 、 そ れ 以 外 が cgroupfs v2 ( /sys/fs/cgroup/unified ) ツ リ ー と 言 っ た よ う な ミ ッ ク ス マ ウ ン ト を 扱 え ま す 。 書 き 込 み 可 能 な cgroup が す べ て の コ ン ト ロ ー ラ 用 に 作 ら れ ま す 。 ま た 、 引 数 で 指 定 す れ ば 、 指 定 し た コ ン ト ロ ー ラ の み 書 き 込 み 可 能 な cgroup が 作 ら れ ま す 。 純 粋 な cgroup v2 の み の マ ウ ン ト は pam_cgfs.so モ ジ ュ ー ル で は 対 象 外 で す 。

作 成 さ れ た cgroup user/$user/n は cgroup カ ー ネ ル コ ン ト ロ ー ラ 階 層 配 下 の n 番 目 の セ ッ シ ョ ン 用 で す 。

init シ ス テ ム が systemd で あ る シ ス テ ム は 、 cgroupfs v1 と v2 の 両 方 が 特 別 に 扱 わ れ ま す 。 cgroupfs v1 と v2 の 両 方 に 対 し て 、 こ の モ ジ ュ ー ル は systemd が 既 に 、 user.slice/user-$uid/session-n.scope を cgroup 内 に 作 成 し て い る か ど う か 、 $uid == login uid で あ る か ど う か を チ ェ ッ ク し ま す 。 も し $uid == login uid で あ る な ら 、 session-n.scope を ユ ー ザ に chown し ま す 。 そ う で な け れ ば 、 前 述 の よ う な cgroup ( user/$user/n ) が 作 成 さ れ 、 ロ グ イ ン uid で chown さ れ ま す 。 も し 、 init シ ス テ ム が す で に セ ッ シ ョ ン 特 有 の グ ル ー プ 内 に ロ グ イ ン ユ ー ザ ー の cgroup を 配 置 し て い る な ら 、 pam_cgfs.so モ ジ ュ ー ル は そ れ を 検 出 し て 再 利 用 す る 機 能 を 持 っ て い ま す 。

基 本 的 に は pam_cgfs.so モ ジ ュ ー ル は 、 ロ グ イ ン 時 に 非 特 権 ( 非 root) ユ ー ザ が 書 き 込 み で き る cgroup を 配 置 し 、 ロ グ ア ウ ト 時 に も そ の cgroup ツ リ ー を ク リ ー ン ア ッ �\x83\x97す る 処 理 を 行 い ま す 。 し た が っ て 、 必 要 に 応 じ て 提 供 さ れ て い る リ ソ ー ス を コ ン テ ナ に 自 由 に 委 譲 で き ま す 。

オ プ シ ョ ン

-c controller-list

カ ン マ ( ",") で 区 切 ら れ た カ ー ネ ル コ ン ト ロ ー ラ と 名 前 付 き コ ン ト ロ ー ラ ( 訳 注 : mount オ プ シ ョ ン と し て name オ プ シ ョ ン で 名 前 を 指 定 し て マ ウ ン ト し た cgroup v1 ツ リ ー ) の リ ス ト を 設 定 し た 文 字 列 の 引 数 を 取 り ま す 。 名 前 付 き コ ン ト ロ ー ラ は "name=$namedcontroller" の 形 で 指 定 す る 必 要 が あ り ま す 。 "all" を 指 定 し て 、 す べ て の cgroup リ ソ ー ス コ ン ト ロ ー ラ ー の ツ リ ー を 有 効 に で き ま す 。 "all" と 他 の コ ン ト ロ ー ラ を 同 時 に 指 定 す る と 、 明 確 に PAM_SESSION_ERR が 返 り ま す 。

MODULE TYPES PROVIDED

モ ジ ュ ー ル タ イ プ と し て session の み が 提 供 さ れ ま す ( そ し て 必 要 で す ) 。

返 り 値

PAM_SUCCESS

ユ ー ザ 用 の 書 き 込 み 可 能 な cgroup が 作 成 さ れ ま し た 。

PAM_SESSION_ERR

ユ ー ザ 用 の 書 き 込 み 可 能 な cgroup の 作 成 が 失 敗 し ま し た 。

フ ァ イ ル

/etc/pam.d/common-session{,-noninteractive}

こ れ ら の フ ァ イ ル の 最 後 に デ フ ォ ル ト 設 定 が 追 加 さ れ ま す 。

session optional pam_cgfs.so -c freezer,memory,named=systemd
# デ フ ォ ル ト 設 定
# ユ ー ザ が 書 き 込 み 可 能 な cgroup が freezer, memory, 名 前 付 き cgroup "systemd" ツ リ ー 以 下 に 作 成 さ れ ま す 。
# freezer と memory に 対 し て は /sys/fs/cgroup/$controller/user/$user/n
# systemd に 対 し て は /sys/fs/cgroup/systemd/user.slice/user-$uid/session-n.scope

session optional pam_cgfs.so -c all
# す べ て の cgroup コ ン ト ロ ー ラ 以 下 に ユ ー ザ が 書 き 込 み 可 能 な cgroup が 作 成 さ れ ま す

session optional pam_cgfs.so -c all,memory,freezer
# 不 正 な 引 数 な の で PAM_SESSION_ERR が 返 り ま す

SEE ALSO

lxc-cgroup (1), cgroups (7), user_namespaces (7), namespaces (7), pam (8)