症状
Ubuntu24.04でk3sやnerdctlでrootlessなコンテナを生やそうとしても次のようなエラーが出て動かない。
error: failed to start the child: fork/exec /proc/self/exe: operation not permitted
journaldには次のようなログが残っている。
audit: type=1400 audit(1714628558.423:115): apparmor="AUDIT" operation="userns_create" class="namespace" info="Userns create - transitioning profile" profile="unconfined" pid=1582 comm="k3s-server" requested="userns_create" target="unprivileged_userns"
原因
Ubuntu24.04ではセキュリティ強化のためAppArmorのルールが強化され、プロファイルをインストールしない限りデフォルトで非特権プロセスからユーザー名前空間の作成が禁止されるようになった模様。
対策
/etc/apparmor.d/
の下に適当なファイル名でプロファイルを作る。
abi <abi/4.0>,
include <tunables/global>
profile 適当な名前 [バイナリへのパス] flags=(unconfined) {
userns,
include if exists <local/[最初と同じ名前]>
}
保存したらAppArmorをリロードして適用することを忘れずに
sudo systemctl restart apparmor.service