Provided by: lxc_1.0.10-0ubuntu1.1_amd64 bug

NAME

       lxc-attach - 実行中のコンテナ内でプロセスの開始

SYNOPSIS

       lxc-attach {-n name} [-a arch] [-e] [-s namespaces] [-R] [--keep-env] [--clear-env] [--
                  command]

説明

       lxc-attachname で指定したコンテナ内で指定した command を実行します。  実行する時点でコ
       ンテナが実行中でなければなりません。

       もし command が指定されていない場合、lxc-attach コマンドを実行したユーザのデフォルトシェル
       をコンテナ内で調べて実行します。      もしコンテナ内にユーザが存在しない場合や、コンテナで
       nsswitch 機構が働いていない場合はこの動作は失敗します。

オプション

       -a, --arch arch
              コマンドを実行するコンテナのアーキテクチャを指定します。 このオプションは、コンテナ
              の設定ファイルで指定する lxc.arch オプションと同じものが使用可能です。  lxc.conf(5)
              を参照してください。デフォルトでは、実行しているコンテナのアーキテクチャになりま
              す。

       -e, --elevated-privileges privileges
              コンテナの内部で command を実行する時に特権を削除しません。  もしこのオプションが指
              定された場合、新しいプロセスはコンテナの cgroup に追加 されず、実行する前にケーパビ
              リティ (capability) も削除しません。

              全ての特権の取得したくない場合は、パイプで連結したリストとして、例えば   CGROUP|LSM
              のように、特権を指定することが可能です。  指定できる値は、それぞれ cgroup、ケーパビ
              リティ、特権の制限を表す CGROUPCAPLSM です。 (パイプ記号を CGROUP\|LSM のように
              エスケープするか、"CGROUP|LSM" のように引用符号を付ける必要があります。)

              警告: もし実行するコマンドが、アタッチするメインプロセスが終了した後も実行されたま
              まのサブプロセスを開始するような場合、このオプションの指定はコンテナ内への特権の
              リークとなる可能性があります。 コンテナ内でのデーモンの開始(もしくは再起動)は問題と
              なります。 デーモンが多数のサブプロセスを開始する cronsshd のような場合は特に問
              題となります。 充分な注意を払って使用してください。

       -s, --namespaces namespaces
              アタッチする名前空間をパイプで連結したリストで指定します。  例えば NETWORK|IPC のよ
              うにです。 ここで使用可能な値は MOUNT, PID, UTSNAME, IPC, USER , NETWORK です。  こ
              れにより指定した名前空間にプロセスのコンテキストを変更できます。   例えばコンテナの
              ネットワーク名前空間に変更する一方で、他の名前空間はホストの名前空間のままにすると
              いうような事が可能です。     (パイプ記号を     MOUNT\|PID    のようにエスケープする
              か、"MOUNT|PID" のように引用符号を付ける必要があります。)

              重要: このオプションは -e  オプションを指定しなくても指定している場合と同様の動作を
              します。

       -R, --remount-sys-proc
              -s  を指定し、そこにマウント名前空間が含まれない時、このオプションにより lxc-attach/proc/sys をリマウントします。  これは現在の他の名前空間のコンテキストを反映
              させるためです。

              もっと詳細な説明は 注意 を参照してください。

              このオプションは、マウント名前空間へのアタッチが行われる場合は無視されます。

       --keep-env
              アタッチされるプログラムに対して現在の環境を保持したままにします。 これは現在 (バー
              ジョン 0.9 時点) のデフォルトの動作ですが、将来は変更される予定です。  この動作がコ
              ンテナ内への望ましくない情報の漏洩につながる可能性があるためです。 アタッチするプロ
              グラムで環境変数が利用可能であることを期待している場合、将来的にもそれが保証される
              ようにこのオプションを使用するようにしてください。             現在の環境変数に加え
              て、container=lxc が設定されます。

       --clear-env
              アタッチする前に環境変数をクリアします。 これによりコンテナへの不要な環境変数の漏洩
              が起こらなくなります。  変数 container=lxc のみがアタッチするプログラムの開始の時の
              環境変数となります。

共通オプション

       ここで紹介するオプションは lxc コマンドの大部分で共通のものです。

       -?, -h, --help
              通常より長い使い方のメッセージを表示します。

       --usage
              使い方を表示します。

       -q, --quiet
              出力を抑制します。

       -P, --lxcpath=PATH
              デフォルトと別のコンテナパスを使用します。デフォルトは /var/lib/lxc です。

       -o, --logfile=FILE
              追加のログを FILE に出力します。デフォルトは出力しません。

       -l, --logpriority=LEVEL
              ログの優先度を LEVEL に設定します。デフォルトの優先度は ERROR  です。以下の値を設定
              可能です: FATAL, CRIT, WARN, ERROR, NOTICE, INFO, DEBUG。

              このオプションは追加のログファイルへのイベントログの優先度の設定である事に注意して
              ください。stderr への ERROR イベントのログには影響しません。

       -n, --name=NAME
              NAME という名前でコンテナを識別します。コンテナ識別子のフォーマットは英数字の文字列
              です。

       --version
              バージョン番号を表示します。

       存在するコンテナ内で新しいシェルを生成するには、以下のようにします。

                 lxc-attach -n container

       実行中の Debian コンテナの cron サービスを再起動するには、以下のように実行します。

                 lxc-attach -n container -- /etc/init.d/cron restart

       NET_ADMIN ケーパビリティを持たない実行中のコンテナのネットワークインターフェース eth1 の動
       作を停止させるには、ケーパビリティを増加させるために -e オプションを指定し、ip  ツールがイ
       ンストールされていることを前提に、以下のように実行します。

                 lxc-attach -n container -e -- /sbin/ip link delete eth1

互換性

       (pid とマウント名前空間を含む) コンテナに対する完全なアタッチを行うには 3.8 以上、もしくは
       パッチを適用したカーネルが必要となります。 詳しくは lxc のウェブサイトを参照してください。
       パッチが当たっていない 3.8 より小さなバージョンのカーネルを使った場合は、lxc-attach の実行
       は失敗するでしょう。

       しかし、もし -s を使用して、アタッチするものを NETWORK, IPC, UTSNAME の 1 つか複数の名前空
       間に限定して使用すれば、バージョン  3.0 以上のパッチを適用していないカーネルでもアタッチが
       成功するでしょう。

       ユーザ名前空間へのアタッチは、ユーザ名前空間機能を有効にした 3.8  以上のカーネルでサポート
       されます。

注意

       Linux  の /proc/sys ファイルシステムは名前空間によって影響を受けるある程度の情報を持っ
       ています。 これは /proc 内のプロセス ID の名前のディレクトリや、/sys/class/net  内のネット
       ワークインターフェース名のディレクトリなどです。  擬似ファイルシステムをマウントしているプ
       ロセスの名前空間が、どのような情報を表示するかを決定します。 /proc/sys  にアクセスして
       いるプロセスの名前空間が決定するのではありません。

       -s  を使ってコンテナの  pid  名前空間のみをアタッチし、マウント名前空間  (これはコンテナの
       /proc を含み、ホストのは含まないでしょう) はアタッチしない場合、/proc のコンテンツはコンテ
       ナのものではなく、ホストのものとなります。  似たような事例として、ネットワーク名前空間のみ
       をアタッチして、/sys/class/net のコンテンツを読んだ場合も同じような事が起こるでしょう。

       この問題への対処のために、-R オプションが  /proc/sys  が提供されています。  これによ
       り、アタッチするプロセスのネットワーク/pid  名前空間のコンテキストを反映させることができま
       す。ホストの実際のファイルシステムに影響を与えないために、実行前にはマウント名前空間は
       unshare されます (lxc-unshare のように)。 これは、/proc/sys ファイルシステム以外はホス
       トのマウント名前空間と同じである、新しいマウント名前空間がプロセスに与えられるということで
       す。

セキュリティ

       -e-s オプションの使用には注意を払うべきです。 不適切に使用した場合、コンテナの隔離を破
       壊してしまう可能性があります。

SEE ALSO

       lxc(7), lxc-create(1), lxc-destroy(1),  lxc-start(1),  lxc-stop(1),  lxc-execute(1),  lxc-
       console(1),  lxc-monitor(1),  lxc-wait(1),  lxc-cgroup(1),  lxc-ls(1),  lxc-info(1),  lxc-
       freeze(1), lxc-unfreeze(1), lxc-attach(1), lxc.conf(5)

作者

       Daniel Lezcano <daniel.lezcano@free.fr>

                                            2017-08-01                              lxc-attach(1)