lxc-attach.sgml.in revision 352470062e49751bca512a2817446962a35aedc0
bb2b38cd44b032118359afbc743efbea12f48e61bnicholeslxc: linux Container library
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes(C) Copyright IBM Corp. 2007, 2008
bb2b38cd44b032118359afbc743efbea12f48e61bnicholesDaniel Lezcano <daniel.lezcano at free.fr>
bb2b38cd44b032118359afbc743efbea12f48e61bnicholesThis library is free software; you can redistribute it and/or
0662ed52e814f8f08ef0e09956413a792584eddffuankgmodify it under the terms of the GNU Lesser General Public
bb2b38cd44b032118359afbc743efbea12f48e61bnicholesLicense as published by the Free Software Foundation; either
bb2b38cd44b032118359afbc743efbea12f48e61bnicholesversion 2.1 of the License, or (at your option) any later version.
bb2b38cd44b032118359afbc743efbea12f48e61bnicholesThis library is distributed in the hope that it will be useful,
bb2b38cd44b032118359afbc743efbea12f48e61bnicholesbut WITHOUT ANY WARRANTY; without even the implied warranty of
bb2b38cd44b032118359afbc743efbea12f48e61bnicholesMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
bb2b38cd44b032118359afbc743efbea12f48e61bnicholesLesser General Public License for more details.
70953fb44a7140fe206c3a5f011e24209c8c5c6abnicholesYou should have received a copy of the GNU Lesser General Public
44f575c8cb19a7a5cd61664a7848be6bc197df02fuankgLicense along with this library; if not, write to the Free Software
44f575c8cb19a7a5cd61664a7848be6bc197df02fuankgFoundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
bb2b38cd44b032118359afbc743efbea12f48e61bnicholesTranslated into Japanese
bb2b38cd44b032118359afbc743efbea12f48e61bnicholesby KATOH Yasufumi <karma at jazz.email.ne.jp>
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes<!ENTITY commonoptions SYSTEM "@builddir@/common_options.sgml">
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes<!ENTITY seealso SYSTEM "@builddir@/see_also.sgml">
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes <docinfo><date>@LXC_GENERATE_DATE@</date></docinfo>
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes <refnamediv>
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes <refpurpose>
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes start a process inside a running container.
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes 実行中のコンテナ内でプロセスの開始
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes </refpurpose>
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes </refnamediv>
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes <refsynopsisdiv>
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes <cmdsynopsis>
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes <arg choice="req">-n <replaceable>name</replaceable></arg>
ac7985784d08a3655291f24f711812b4d8b1cbcffuankg <arg choice="opt">-a <replaceable>arch</replaceable></arg>
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes <arg choice="opt">-s <replaceable>namespaces</replaceable></arg>
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes <arg choice="opt">-- <replaceable>command</replaceable></arg>
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes </cmdsynopsis>
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes </refsynopsisdiv>
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes <command>lxc-attach</command> runs the specified
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes <replaceable>command</replaceable> inside the container
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes specified by <replaceable>name</replaceable>. The container
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes has to be running already.
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes <command>lxc-attach</command> は <replaceable>name</replaceable> で指定したコンテナ内で指定した <replaceable>command</replaceable> を実行します。
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes 実行する時点でコンテナが実行中でなければなりません。
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes If no <replaceable>command</replaceable> is specified, the
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes current default shell of the user running
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes <command>lxc-attach</command> will be looked up inside the
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes container and executed. This will fail if no such user exists
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes inside the container or the container does not have a working
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes nsswitch mechanism.
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes もし <replaceable>command</replaceable> が指定されていない場合、<command>lxc-attach</command> コマンドを実行したユーザのデフォルトシェルをコンテナ内で調べて実行します。
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes もしコンテナ内にユーザが存在しない場合や、コンテナで nsswitch 機構が働いていない場合はこの動作は失敗します。
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes Previous versions of <command>lxc-attach</command> simply attached to the
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes specified namespaces of a container and ran a shell or the specified command
ac7985784d08a3655291f24f711812b4d8b1cbcffuankg without first allocating a pseudo terminal. This made them vulnerable to
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes input faking via a TIOCSTI <command>ioctl</command> call after switching
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes between userspace execution contexts with different privilege levels. Newer
0a39e7683f6611d66c55712f50bb240428d832a1bnicholes versions of <command>lxc-attach</command> will try to allocate a pseudo
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes terminal master/slave pair on the host and attach any standard file
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes descriptors which refer to a terminal to the slave side of the pseudo
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes terminal before executing a shell or command. Note, that if none of the
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes standard file descriptors refer to a terminal <command>lxc-attach</command>
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes will not try to allocate a pseudo terminal. Instead it will simply attach
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes to the containers namespaces and run a shell or the specified command.
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes 前のバージョンの <command>lxc-attach</command> は、単に指定したコンテナの名前空間にアタッチし、最初に擬似端末 (pseudo terminal) を割り当てないで、シェルもしくは指定したコマンドを実行しました。
ac7985784d08a3655291f24f711812b4d8b1cbcffuankg これは、異なる特権レベルを持つユーザ空間の実行コンテキストを切り替えた後に、TIOCSTI <command>ioctl</command> の呼び出し経由で擬似入力を行うことに対して脆弱となります。
0662ed52e814f8f08ef0e09956413a792584eddffuankg 新しいバージョンの <command>lxc-attach</command> は、ホスト上の擬似端末のマスター/スレーブのペアを割り当てようとします。そしてシェルやコマンドを実行する前に、擬似端末のスレーブ側に対して、ターミナルを参照する標準ファイルディスクリプタをアタッチします。
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes ターミナルを参照する標準ファイルディスクリプタがない場合は、<command>lxc-attach</command> は擬似端末の割り当てを行わないことに注意してください。代わりに、単にコンテナの名前空間にアタッチし、シェルや指定したコマンドを実行します。
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes <variablelist>
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes <varlistentry>
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes <option>-a, --arch <replaceable>arch</replaceable></option>
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes Specify the architecture which the kernel should appear to be
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes running as to the command executed. This option will accept the
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes same settings as the <option>lxc.arch</option> option in
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes container configuration files, see
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes <citerefentry>
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes <refentrytitle><filename>lxc.conf</filename></refentrytitle>
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes <manvolnum>5</manvolnum>
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes </citerefentry>. By default, the current archictecture of the
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes running container will be used.
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes コマンドを実行するコンテナのアーキテクチャを指定します。
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes このオプションは、コンテナの設定ファイルで指定する <option>lxc.arch</option> オプションと同じものが使用可能です。
ac7985784d08a3655291f24f711812b4d8b1cbcffuankg <citerefentry>
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes <refentrytitle><filename>lxc.conf</filename></refentrytitle>
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes </citerefentry> を参照してください。デフォルトでは、実行しているコンテナのアーキテクチャになります。
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes </varlistentry>
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes <varlistentry>
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes -e, --elevated-privileges <replaceable>privileges</replaceable>
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes Do not drop privileges when running
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes <replaceable>command</replaceable> inside the container. If
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes this option is specified, the new process will
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes <emphasis>not</emphasis> be added to the container's cgroup(s)
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes and it will not drop its capabilities before executing.
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes コンテナの内部で <replaceable>command</replaceable> を実行する時に特権を削除しません。
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes もしこのオプションが指定された場合、新しいプロセスはコンテナの cgroup に追加 <emphasis>されず</emphasis>、実行する前にケーパビリティ (capability) も削除しません。
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes You may specify privileges, in case you do not want to elevate all of
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes them, as a pipe-separated list, e.g.
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes <replaceable>CGROUP|LSM</replaceable>. Allowed values are
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes <replaceable>CGROUP</replaceable>, <replaceable>CAP</replaceable> and
cf7ca2f9eaa6523fefcccba4287b91637391fb51fuankg <replaceable>LSM</replaceable> representing cgroup, capabilities and
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes restriction privileges respectively. (The pipe symbol needs to be escaped,
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes e.g. <replaceable>CGROUP\|LSM</replaceable> or quoted, e.g.
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes <replaceable>"CGROUP|LSM"</replaceable>.)
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes 全ての特権の取得したくない場合は、パイプで連結したリストとして、例えば <replaceable>CGROUP|LSM</replaceable> のように、特権を指定することが可能です。
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes 指定できる値は、それぞれ cgroup、ケーパビリティ、特権の制限を表す <replaceable>CGROUP</replaceable>、<replaceable>CAP</replaceable>、<replaceable>LSM</replaceable> です。
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes (パイプ記号を <replaceable>CGROUP\|LSM</replaceable> のようにエスケープするか、<replaceable>"CGROUP|LSM"</replaceable> のように引用符号を付ける必要があります。)
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes <emphasis>Warning:</emphasis> This may leak privileges into the
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes container if the command starts subprocesses that remain active
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes after the main process that was attached is terminated. The
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes (re-)starting of daemons inside the container is problematic,
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes especially if the daemon starts a lot of subprocesses such as
ac7985784d08a3655291f24f711812b4d8b1cbcffuankg <command>cron</command> or <command>sshd</command>.
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes <emphasis>Use with great care.</emphasis>
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes もし実行するコマンドが、アタッチするメインプロセスが終了した後も実行されたままのサブプロセスを開始するような場合、このオプションの指定はコンテナ内への特権のリークとなる可能性があります。
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes コンテナ内でのデーモンの開始(もしくは再起動)は問題となります。
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes デーモンが多数のサブプロセスを開始する <command>cron</command> や <command>sshd</command> のような場合は特に問題となります。
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes </varlistentry>
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes <varlistentry>
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes <option>-s, --namespaces <replaceable>namespaces</replaceable></option>
ac7985784d08a3655291f24f711812b4d8b1cbcffuankg Specify the namespaces to attach to, as a pipe-separated list,
ac7985784d08a3655291f24f711812b4d8b1cbcffuankg e.g. <replaceable>NETWORK|IPC</replaceable>. Allowed values are
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes <replaceable>MOUNT</replaceable>, <replaceable>PID</replaceable>,
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes <replaceable>UTSNAME</replaceable>, <replaceable>IPC</replaceable>,
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes <replaceable>USER </replaceable> and
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes <replaceable>NETWORK</replaceable>. This allows one to change
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes the context of the process to e.g. the network namespace of the
ac7985784d08a3655291f24f711812b4d8b1cbcffuankg container while retaining the other namespaces as those of the
ac7985784d08a3655291f24f711812b4d8b1cbcffuankg host. (The pipe symbol needs to be escaped, e.g.
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes <replaceable>MOUNT\|PID</replaceable> or quoted, e.g.
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes <replaceable>"MOUNT|PID"</replaceable>.)
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes アタッチする名前空間をパイプで連結したリストで指定します。
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes ここで使用可能な値は <replaceable>MOUNT</replaceable>, <replaceable>PID</replaceable>, <replaceable>UTSNAME</replaceable>, <replaceable>IPC</replaceable>, <replaceable>USER </replaceable>, <replaceable>NETWORK</replaceable> です。
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes これにより指定した名前空間にプロセスのコンテキストを変更できます。
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes 例えばコンテナのネットワーク名前空間に変更する一方で、他の名前空間はホストの名前空間のままにするというような事が可能です。
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes (パイプ記号を <replaceable>MOUNT\|PID</replaceable> のようにエスケープするか、<replaceable>"MOUNT|PID"</replaceable> のように引用符号を付ける必要があります。)
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes <emphasis>Important:</emphasis> This option implies
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes <option>-e</option>.
ac7985784d08a3655291f24f711812b4d8b1cbcffuankg <emphasis>重要:</emphasis> このオプションは <option>-e</option> オプションを指定しなくても指定している場合と同様の動作をします。
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes </varlistentry>
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes <varlistentry>
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes When using <option>-s</option> and the mount namespace is not
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes included, this flag will cause <command>lxc-attach</command>
0662ed52e814f8f08ef0e09956413a792584eddffuankg to remount <replaceable>/proc</replaceable> and
bb2b38cd44b032118359afbc743efbea12f48e61bnicholes <replaceable>/sys</replaceable> to reflect the current other
ac7985784d08a3655291f24f711812b4d8b1cbcffuankg namespace contexts.
<option>-s</option> を指定し、そこにマウント名前空間が含まれない時、このオプションにより <command>lxc-attach</command> は <replaceable>/proc</replaceable> と <replaceable>/sys</replaceable> をリマウントします。
NET_ADMIN ケーパビリティを持たない実行中のコンテナのネットワークインターフェース eth1 の動作を停止させるには、ケーパビリティを増加させるために <option>-e</option> オプションを指定し、<command>ip</command> ツールがインストールされていることを前提に、以下のように実行します。
しかし、もし <option>-s</option> を使用して、アタッチするものを <replaceable>NETWORK</replaceable>, <replaceable>IPC</replaceable>, <replaceable>UTSNAME</replaceable> の 1 つか複数の名前空間に限定して使用すれば、バージョン 3.0 以上のパッチを適用していないカーネルでもアタッチが成功するでしょう。
Linux の <replaceable>/proc</replaceable> と <replaceable>/sys</replaceable> ファイルシステムは名前空間によって影響を受けるある程度の情報を持っています。
これは <replaceable>/proc</replaceable> 内のプロセス ID の名前のディレクトリや、<replaceable>/sys/class/net</replaceable> 内のネットワークインターフェース名のディレクトリなどです。
<option>-s</option> を使ってコンテナの pid 名前空間のみをアタッチし、マウント名前空間 (これはコンテナの <replaceable>/proc</replaceable> を含み、ホストのは含まないでしょう) はアタッチしない場合、<option>/proc</option> のコンテンツはコンテナのものではなく、ホストのものとなります。
似たような事例として、ネットワーク名前空間のみをアタッチして、<replaceable>/sys/class/net</replaceable> のコンテンツを読んだ場合も同じような事が起こるでしょう。
この問題への対処のために、<option>-R</option> オプションが <replaceable>/proc</replaceable> と <replaceable>/sys</replaceable> が提供されています。
これにより、アタッチするプロセスのネットワーク/pid 名前空間のコンテキストを反映させることができます。ホストの実際のファイルシステムに影響を与えないために、実行前にはマウント名前空間は unshare されます (<command>lxc-unshare</command> のように)。
これは、<replaceable>/proc</replaceable> と <replaceable>/sys</replaceable> ファイルシステム以外はホストのマウント名前空間と同じである、新しいマウント名前空間がプロセスに与えられるということです。
thus fail unexpectedly for some users (E.g. on systems where an
以前のバージョンの <command>lxc-attach</command> は、いくつかの重要なサブシステムに対して、書き込み可能な cgroup 内に配置することなしに、ユーザがコンテナの名前空間にアタッチできたバグがありました。