Debian 11 Bullseyeで権限のないLXCコンテナを起動できません

Debian 11 Bullseyeで権限のないLXCコンテナを起動できません

Debian 11 を再インストールしました。 LXC に関して Debian 10 システムのジョブ設定をコピーしました。私がlxcuser望む別suのユーザーを使用していますlxc-start

構成、~/.config/lxc/default.conf

lxc.idmap = u 0 165536 65536
lxc.idmap = g 0 165536 65536
lxc.apparmor.profile = unconfined
lxc.mount.auto = proc:mixed sys:ro cgroup:mixed
lxc.net.0.type = veth
lxc.net.0.link = lxcbr0
lxc.net.0.flags = up
lxc.net.0.hwaddr = 00:FF:xx:xx:xx:xx
#lxc.include = /etc/lxc/default.conf

ファイルシステム権限は、前の設定で行ったようにACLを使用して設定されます。

lxc-checkconfig

LXC version 4.0.6
Kernel configuration not found at /proc/config.gz; searching...
Kernel configuration found at /boot/config-5.10.0-7-amd64
--- Namespaces ---
Namespaces: enabled
Utsname namespace: enabled
Ipc namespace: enabled
Pid namespace: enabled
User namespace: enabled
Network namespace: enabled

--- Control groups ---
Cgroups: enabled

Cgroup v1 mount points:


Cgroup v2 mount points:
/sys/fs/cgroup

Cgroup v1 systemd controller: missing
Cgroup v1 freezer controller: missing
Cgroup namespace: required
Cgroup device: enabled
Cgroup sched: enabled
Cgroup cpu account: enabled
Cgroup memory controller: enabled
Cgroup cpuset: enabled

--- Misc ---
Veth pair device: enabled, not loaded
Macvlan: enabled, not loaded
Vlan: enabled, not loaded
Bridges: enabled, loaded
Advanced netfilter: enabled, loaded
CONFIG_NF_NAT_IPV4: missing
CONFIG_NF_NAT_IPV6: missing
CONFIG_IP_NF_TARGET_MASQUERADE: enabled, not loaded
CONFIG_IP6_NF_TARGET_MASQUERADE: enabled, not loaded
CONFIG_NETFILTER_XT_TARGET_CHECKSUM: enabled, not loaded
CONFIG_NETFILTER_XT_MATCH_COMMENT: enabled, not loaded
FUSE (for use with lxcfs): enabled, loaded

--- Checkpoint/Restore ---
checkpoint restore: enabled
CONFIG_FHANDLE: enabled
CONFIG_EVENTFD: enabled
CONFIG_EPOLL: enabled
CONFIG_UNIX_DIAG: enabled
CONFIG_INET_DIAG: enabled
CONFIG_PACKET_DIAG: enabled
CONFIG_NETLINK_DIAG: enabled
File capabilities:

Note : Before booting a new kernel, you can check its configuration
usage : CONFIG=/path/to/config /usr/bin/lxc-checkconfig

デバッグオプションを使用して実行した後、次の行でエラーを正確に指摘したようです。

DEBUG    cgfsng - cgroups/cgfsng.c:cgfsng_monitor_create:1355 - Failed to create cgroup "(null)"
WARN     cgfsng - cgroups/cgfsng.c:mkdir_eexist_on_last:1152 - Permission denied - Failed to create directory "/sys/fs/cgroup/user.slice/user-1000.slice/session-1.scope/lxc.monitor.arch"

/sys/fs/cgroup/user.slice/user-1000.slice/session-1.scopeディレクトリの権限を変更しても効果はありません。 usingsudoもそこに書き込めません。

cgroupv2この問題は、Debian 11でこの機能がデフォルトで有効になっているために発生すると思います。オンラインで見つけたさまざまな解決策を試しましたが、これまで何の効果もありませんでした。

どんなアイデアがありますか?権限のないLXCがcgroupv2と連携するようにするか、Debian 11でcgroupv2を無効にしてcgroupv1を有効にする(またはDebian 10のcgroup設定を模倣する)正しい操作を実行してください。他のソリューションも大歓迎です!

いくつかのリンク:
同じ問題ですが、解決策はありません
私のブログでは、Debian 10で権限のないLXCを設定する方法について説明し、設定をコピーしました。


修正する:systemd.unified_cgroup_hierarchy=false systemd.legacy_systemd_cgroup_controller=false"コンテナの起動を支援するためにカーネルパラメータに追加されました。ただし、コンテナ内ではまだ次のエラーが発生します。

Arch Linux:

Welcome to Arch Linux!

Failed to create /init.scope control group: Permission denied
Failed to allocate manager object: Permission denied
[!!!!!!] Failed to allocate manager object.
Exiting PID 1...

セントース8:

Welcome to CentOS Linux 8!

Failed to read AF_UNIX datagram queue length, ignoring: No such file or directory
Failed to install release agent, ignoring: No such file or directory
Failed to create /init.scope control group: Permission denied
Failed to allocate manager object: Permission denied
[!!!!!!] Failed to allocate manager object, freezing.
Freezing execution.

ベストアンサー1

Debian Bullseye LXCパッケージ(2021年6月11日金曜日にリリースされた1:4.0.6-2)の最新バージョンが最近リリースされました。変更に関する警告cgroup v2 と LXC 4.x を使用して、Debian 11 で権限のないコンテナを起動します。

lxc(1:4.0.6-2)緊急度=中間。

  • コマンドを使用して、
    権限のないコンテナの実行と接続を処理する新しい方法を提供します。バラよりlxc-unpriv-startlxc-unpriv-attach
    /usr/share/doc/lxc/README.Debian.gz詳細については。

——ピエール・エリオット・ベク[Eメール保護] 2021年6月11日金曜日15:12:15 +0200

Readmeの最初の部分はOPによって処理されたようです。 OP質問の関連部分は次のとおりです。7) コンテナの起動:

  1. コンテナの起動

統合グループ階層(Debian 11 / bullseyeで始まるsystemdのデフォルト)では、root以外のユーザーは、root以外のユーザーとしてコンテナを起動するには、いくつかの追加権限を持つlxc-startが必要です。最も簡単な方法はsystemdを使用することです。。プロパティが設定されたカスタムサービスを使用してコンテナを起動するか、Delegate=true system-runを使用して明示的にこれを実行できます。

$ systemd-run --scope --quiet --user --property=Delegate=yes \
  lxc-start -n mycontainer

あるいは、最後にDebianが提供するヘルパースクリプトを使用することもできます lxc-unpriv-startsystemd-runコマンドを正しく使用し、必要な環境変数が正しく設定されていることを確認してください。

「3)権限の確認」の部分も言及する価値があります(適応する正しい値を含む)。

$ setfacl --modify user:100000:x . .local .local/share

systemd または Debian ラッパーを使用した例:

$ lxc-create -n busybox-amd64 -t busybox

$ lxc-start -n busybox-amd64
lxc-start: busybox-amd64: lxccontainer.c: wait_on_daemonized_start: 859 Received container state "ABORTING" instead of "RUNNING"
lxc-start: busybox-amd64: tools/lxc_start.c: main: 308 The container failed to start
lxc-start: busybox-amd64: tools/lxc_start.c: main: 311 To get more details, run the container in foreground mode
lxc-start: busybox-amd64: tools/lxc_start.c: main: 313 Additional information can be obtained by setting the --logfile and --logpriority options

$ systemd-run --scope --quiet --user --property=Delegate=yes lxc-start -n busybox-amd64
$ lxc-ls --active
busybox-amd64 
$ lxc-stop -n busybox-amd64

$ lxc-unpriv-start -n busybox-amd64
Running scope as unit: run-r1c8a4b4fd0294f688f9f63069414fbf0.scope
$ lxc-ls --active
busybox-amd64 

この情報は、以前は一部のバグレポートにのみ埋め込まれており、整理するのが困難でした。


メモ:

もちろん、実際のオペレーティングシステム(Debian、CentOS ...)を正常に起動することもできます。

参考までにこのQ&Aとは関係ありません。今日(2021-06-26)使用ダウンロード金型,hkp://pool.sks-keyservers.netサービスが終了したようです。テンプレートを作成する前に、次の主キーサーバーのURLをオーバーライドする必要がありました/usr/share/lxc/templates/lxc-download

$ export DOWNLOAD_KEYSERVER=hkp://keys.openpgp.org
$ lxc-create -n centos8-amd64 -t download -- --d centos -r 8 -a amd64
[...]
You just created a Centos 8 x86_64 (20210626_07:08) container.

おすすめ記事