Uid / Gid権限を持つLXCコンテナ:Ubuntu 16.04でsystemd lxc-startが失敗します。

Uid / Gid権限を持つLXCコンテナ:Ubuntu 16.04でsystemd lxc-startが失敗します。

以下の目的で、特定のUIDとGIDのLXCコンテナを作成して起動したいと思います。

rootユーザー(sudoユーザー)としてログインしてlxc-createコンテナを実行し、同じrootユーザーIDを使用してlxc-startコンテナを実行します。コンテナを見つめるときは、コンテナ内のすべてのプロセスを低特権のユーザーIDで開始する必要があります。ここで、ユーザーへのアクセスはホストではなくコンテナに制限されます。デフォルトでは、ps -axuと呼ばれるすべてのコンテナプロセスの低特権ユーザーIDを表示できるはずです。

PS:私のホストはubuntu 16.04 LTSがインストールされている仮想マシンであり、systemd initシステムであり、私のコンテナ(busyboxタイプ)はsystemdサービスを使用して起動されます。そのために、私はbusyboxテンプレートを次のように修正しました。

lxc.init_cmd=/lib/systemd/systemd

また、busyboxのデフォルトテンプレートからすべてのrcSおよびinittab関連のスクリプトを削除しました。

ユーザーIDマッピングのために、テンプレートコードを次のように変更しました。

   lxc.id_map=u 0 165536 65536
   lxc.id_map=g 0 165536 65536

次に、次の手順に従います。

コンテナは通常、次のコマンドを使用して作成されます。 (すべてのテンプレート変更が反映されていることを確認し、問題がないことを確認するために、/var/lib/lxc/testecho_uid/configの設定ファイルをクロスチェックしました。)コード:

sudo lxc-create -n testecho_uid -t busybox_systemd_uid

フォアグラウンドコードを使用してコンテナを起動するには、次のコマンドを入力します。

sudo lxc-start -n testecho_uid -F

エラーは次のとおりです。

vijay@vijay-VirtualBox:~$ sudo lxc-start -n testecho_uid -F
lxc-start: cgfsng.c: cgfsng_create: 1072 No such file or directory - Failed to create /sys/fs/cgroup/systemd//lxc/testecho_uid: No such file or directory
                                         lxc-start: cgfsng.c: cgfsng_create: 1072 No such file or directory - Failed to create /sys/fs/cgroup/systemd//lxc/testecho_uid-1: No such file or directory
                                                                                    newuidmap: uid range [0-65536) -> [165536-231072) not allowed
                                 lxc-start: start.c: lxc_spawn: 1161 failed to set up id mapping
                                                                                                lxc-start: start.c: __lxc_start: 1353 failed to spawn 'testecho_uid'
                                                    newuidmap: uid range [0-65536) -> [165536-231072) not allowed
lxc-start: conf.c: userns_exec_1: 4315 Error setting up child mappings
lxc-start: cgfsng.c: recursive_destroy: 983 Error destroying /sys/fs/cgroup/systemd//lxc/testecho_uid-2
newuidmap: uid range [0-65536) -> [165536-231072) not allowed
lxc-start: conf.c: userns_exec_1: 4315 Error setting up child mappings
lxc-start: cgfsng.c: recursive_destroy: 983 Error destroying /sys/fs/cgroup/perf_event//lxc/testecho_uid-2
newuidmap: uid range [0-65536) -> [165536-231072) not allowed
lxc-start: conf.c: userns_exec_1: 4315 Error setting up child mappings
lxc-start: cgfsng.c: recursive_destroy: 983 Error destroying /sys/fs/cgroup/hugetlb//lxc/testecho_uid-2
newuidmap: uid range [0-65536) -> [165536-231072) not allowed
lxc-start: conf.c: userns_exec_1: 4315 Error setting up child mappings
lxc-start: cgfsng.c: recursive_destroy: 983 Error destroying /sys/fs/cgroup/cpu//lxc/testecho_uid-2
newuidmap: uid range [0-65536) -> [165536-231072) not allowed
lxc-start: conf.c: userns_exec_1: 4315 Error setting up child mappings
lxc-start: cgfsng.c: recursive_destroy: 983 Error destroying /sys/fs/cgroup/memory//lxc/testecho_uid-2
newuidmap: uid range [0-65536) -> [165536-231072) not allowed
lxc-start: conf.c: userns_exec_1: 4315 Error setting up child mappings
lxc-start: cgfsng.c: recursive_destroy: 983 Error destroying /sys/fs/cgroup/pids//lxc/testecho_uid-2
newuidmap: uid range [0-65536) -> [165536-231072) not allowed
lxc-start: conf.c: userns_exec_1: 4315 Error setting up child mappings
lxc-start: cgfsng.c: recursive_destroy: 983 Error destroying /sys/fs/cgroup/blkio//lxc/testecho_uid-2
newuidmap: uid range [0-65536) -> [165536-231072) not allowed
lxc-start: conf.c: userns_exec_1: 4315 Error setting up child mappings
lxc-start: cgfsng.c: recursive_destroy: 983 Error destroying /sys/fs/cgroup/cpuset//lxc/testecho_uid-2
newuidmap: uid range [0-65536) -> [165536-231072) not allowed
lxc-start: conf.c: userns_exec_1: 4315 Error setting up child mappings
lxc-start: cgfsng.c: recursive_destroy: 983 Error destroying /sys/fs/cgroup/net_cls//lxc/testecho_uid-2
newuidmap: uid range [0-65536) -> [165536-231072) not allowed
lxc-start: conf.c: userns_exec_1: 4315 Error setting up child mappings
lxc-start: cgfsng.c: recursive_destroy: 983 Error destroying /sys/fs/cgroup/devices//lxc/testecho_uid-2
newuidmap: uid range [0-65536) -> [165536-231072) not allowed
lxc-start: conf.c: userns_exec_1: 4315 Error setting up child mappings
lxc-start: cgfsng.c: recursive_destroy: 983 Error destroying /sys/fs/cgroup/freezer//lxc/testecho_uid-2
lxc-start: lxc_start.c: main: 344 The container failed to start.
lxc-start: lxc_start.c: main: 348 Additional information can be obtained by setting the --logfile and --logpriority options.

ここに何か落ちたのか誰でも教えてもらえますか?

以下は私のUbuntu 16.04 uidとgidコードの設定です。

vijay@vijay-VirtualBox:~$ sudo cat  /etc/subgid
vijay:100000:65536
usrlxc:165536:65536
vijay:165536:65537

パスワード:

vijay@vijay-VirtualBox:~$ sudo cat  /etc/subuid
vijay:100000:65536
usrlxc:165536:65536
vijay:165536:65537

上記の質問が不明な場合は、以下の同じシナリオに似た他の質問をご覧ください。 root ユーザーまたは sudo ユーザーが権限のないコンテナーにアクセス (lxc start & Attach) する方法はありますか?つまり、問題なくlxcユーザーとしてログインし、lxcユーザー(sudoユーザー/rootではない)を使用して権限のないコンテナーを作成、開始、および接続しました。これで、root ユーザーまたは sudo ユーザーから lxc ユーザーが作成した権限のないコンテナーを起動して接続しようとしました。

それは可能ですか?その場合はどうすればよいか教えてください。 sudo / rootユーザーのlxc-lsを確認しましたが、lxcユーザーによって作成されたコンテナーではなくsudoユーザーによって作成されたコンテナーのみがリストされています。

または

lxc-startを実行すると、root / sudoユーザーが特権コンテナ内のすべてのプロセス/スレッドを実行したり、特定のUID(lxcユーザーなど)に対してどのように実行/実行したりできますか?また、設定に次のlxcユーザーのuidとgidを提供しようとしました(最終的にbusyboxテンプレートの変更)。上記のコメントエラーが発生します。コード: lxc.id_map=u 0 165536 65536 lxc.id_map=g 0 165536 65536 すべての可能な方法を試しましたが、運がありませんでした。このトピックについて教えてください。

以下は、プライベートコンテナ作成実験で作成したUbuntuデスクトップlxcユーザー - > "usrlxc"のユーザーの詳細です。 Sudoユーザー - > "vijay" - これは私のUbuntu 16.04仮想マシンのsudoユーザーです。 rootユーザー - >#私のUbuntu設定やlxc設定に何かがある場合は教えてください。

ベストアンサー1

これまで、実験的なLXCでは特権コンテナのUID / GIPをマッピングするオプションが見つかりませんでした。これにより、UID / GIDマッピングは、権限のないコンテナに対してのみ実行できることを理解できます。間違っていたら訂正してください。つまり、rootユーザー(またはsudoユーザー)はun-privコンテナにアクセスできません。つまり、sudo lxc-lsを実行すると、un -privではなくroot / sudoユーザーが作成したコンテナのみが一覧表示されます。コンテナは、低特権のユーザー(私の場合はusrlxc)によって作成されました。したがって、root/sudo ユーザーから lxc-start/attach un-priv コンテナを実行することはできません。

だから私はsystemDサービスファイルを使ってそれを管理したいと思います。まだ終わっていません。 lxc-create /stop を実行できます。ただし、特定のユーザーに対してsystemDサービスでlxc-startを実行する問題に直面すると、この問題はすぐに解決されます。 systemD サービス方法の代わりに root/sudo ログインで権限のないコンテナを起動するためのより良いソリューションがある場合は、お知らせください。

おすすめ記事