diff --git a/.gitignore b/.gitignore index ce33d3459..b2d4657c4 100644 --- a/.gitignore +++ b/.gitignore @@ -134,6 +134,7 @@ doc/*.8 doc/ja/*.1 doc/ja/*.5 doc/ja/*.7 +doc/ja/*.8 doc/ko/*.1 doc/ko/*.5 doc/ko/*.7 diff --git a/configure.ac b/configure.ac index e546443ad..02fac6ed7 100644 --- a/configure.ac +++ b/configure.ac @@ -913,6 +913,8 @@ AC_CONFIG_FILES([ doc/ja/lxc-usernsexec.sgml doc/ja/lxc-wait.sgml + doc/ja/pam_cgfs.sgml + doc/ja/lxc.conf.sgml doc/ja/lxc.container.conf.sgml doc/ja/lxc.system.conf.sgml diff --git a/doc/ja/Makefile.am b/doc/ja/Makefile.am index 89eae5ad5..ee46c8bcf 100644 --- a/doc/ja/Makefile.am +++ b/doc/ja/Makefile.am @@ -7,40 +7,47 @@ EXTRA_DIST = \ FAQ.txt if ENABLE_DOCBOOK -man_MANS = \ - lxc-attach.1 \ - lxc-autostart.1 \ - lxc-cgroup.1 \ - lxc-checkconfig.1 \ - lxc-checkpoint.1 \ - lxc-config.1 \ - lxc-console.1 \ - lxc-copy.1 \ - lxc-create.1 \ - lxc-destroy.1 \ - lxc-device.1 \ - lxc-execute.1 \ - lxc-freeze.1 \ - lxc-info.1 \ - lxc-ls.1 \ - lxc-monitor.1 \ - lxc-snapshot.1 \ - lxc-start.1 \ - lxc-stop.1 \ - lxc-top.1 \ - lxc-unfreeze.1 \ - lxc-unshare.1 \ - lxc-update-config.1 \ - lxc-user-nic.1 \ - lxc-usernsexec.1 \ - lxc-wait.1 \ - \ - lxc.conf.5 \ - lxc.container.conf.5 \ - lxc.system.conf.5 \ - lxc-usernet.5 \ - \ - lxc.7 +man_MANS = lxc.conf.5 \ + lxc.container.conf.5 \ + lxc.system.conf.5 \ + lxc-usernet.5 \ + lxc.7 + +if ENABLE_TOOLS +man_MANS += lxc-attach.1 \ + lxc-autostart.1 \ + lxc-cgroup.1 \ + lxc-checkconfig.1 \ + lxc-checkpoint.1 \ + lxc-config.1 \ + lxc-console.1 \ + lxc-copy.1 \ + lxc-create.1 \ + lxc-destroy.1 \ + lxc-device.1 \ + lxc-execute.1 \ + lxc-freeze.1 \ + lxc-info.1 \ + lxc-ls.1 \ + lxc-monitor.1 \ + lxc-snapshot.1 \ + lxc-start.1 \ + lxc-stop.1 \ + lxc-top.1 \ + lxc-unfreeze.1 \ + lxc-unshare.1 \ + lxc-wait.1 +endif + +if ENABLE_PAM +man_MANS += pam_cgfs.8 +endif + +if ENABLE_COMMANDS +man_MANS += lxc-update-config.1 \ + lxc-user-nic.1 \ + lxc-usernsexec.1 +endif %.1 : %.sgml $(db2xman) --encoding=UTF-8 $< @@ -54,8 +61,12 @@ man_MANS = \ $(db2xman) --encoding=UTF-8 $< test "$(shell basename $@)" != "$@" && mv $(shell basename $@) $@ || true +%.8 : %.sgml + $(db2xman) --encoding=UTF-8 $< + test "$(shell basename $@)" != "$@" && mv $(shell basename $@) $@ || true + lxc-%.sgml : common_options.sgml see_also.sgml clean-local: - $(RM) manpage.* *.7 *.5 *.1 $(man_MANS) + $(RM) manpage.* *.7 *.5 *.1 *.8 $(man_MANS) endif diff --git a/doc/ja/pam_cgfs.sgml.in b/doc/ja/pam_cgfs.sgml.in new file mode 100644 index 000000000..bc8c470de --- /dev/null +++ b/doc/ja/pam_cgfs.sgml.in @@ -0,0 +1,327 @@ + + + +]> + + + + @LXC_GENERATE_DATE@ + + + pam_cgfs + 8 + + + + pam_cgfs + + + + 非特権の LXC コンテナのための cgroup を管理する + + + + + + pam_cgfs.so + -c kernel_controller,name=named_controller + + + + + <!-- Description -->説明 + + + + 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 v2 (/sys/fs/cgroup) のいずれも扱えます。また、コントローラのいくつかが cgroupfs v1 ツリー (/sys/fs/cgroup/$controller) で、それ以外が cgroupfs v2 (/sys/fs/cgroup/unified) ツリーと言ったようなミックスでも扱えます。 + 書き込み可能な cgroup がすべてのコントローラ用に作られます。また、引数で指定すれば、指定したコントローラのみ書き込み可能な cgroup が作られます。 + + + + + 作成された 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 ツリーをクリーンアップする処理を行います。したがって、必要に応じて提供されているリソースをコンテナに自由に委譲できます。 + + + + + + + <!-- Options -->オプション + + + + + + + + + カンマ(",")で区切られたカーネルコントローラと名前付きコントローラ(訳注: mount オプションとして name オプションで名前を指定してマウントした cgroup v1 ツリー)のリストを設定した文字列の引数を取ります。名前付きコントローラは "name=$namedcontroller" の形で指定する必要があります。"all" を指定して、すべての cgroup リソースコントローラーのツリーを有効にできます。"all" と他のコントローラを同時に指定すると、明確に PAM_SESSION_ERR が返ります。 + + + + + + + + + + Module types provided + + + モジュールタイプとして のみが提供されます(そして必要です)。 + + + + + + <!-- Return Values -->返り値 + + + + + PAM_SUCCESS + + + + ユーザ用の書き込み可能な cgroup が作成されました。 + + + + + + PAM_SESSION_ERR + + + + ユーザ用の書き込み可能な cgroup の作成が失敗しました。 + + + + + + + + + + + <!-- Files -->ファイル + + + + + /etc/pam.d/common-session{,-noninteractive} + + + + これらのファイルの最後にデフォルト設定が追加されます。 + + + + + + + + + + <!-- EXAMPLE -->例 + + +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 + + + + + + + + + Author + Venkata Harshavardhan Reddy Allu venkataharshavardhan_ven@srmuniv.edu.in + + + + +