Public bug reported: The docker-support and multipass-support interfaces allow access to /sbin/apparmor_parser.
/sbin/apparmor_parser is supplied by the core, core18 and core20 base snaps. /etc/apparmor* comes from the host, which on groovy has apparmor3. Snaps using docker-support and multipass-support are completely broken on groovy when using core and core18. On core20, policy loads with warnings. Transparent solution is to ship the /etc/apparmor and /etc/apparmor.d in the base snaps, and bind mount these into place (eg, via snap-confine). Snaps can fix themselves with layouts. Note, there are plans to vendor apparmor3 into snapd for cross-distro support and that will happen in the 21.04 cycle. However, that doesn't fix snaps that plugs docker-support and multipass-support and load their own policy. # core $ cat /tmp/core.profile #include <tunables/global> profile test-core-profile { #include <abstractions/base> } $ sudo /snap/core/current/sbin/apparmor_parser -r /tmp/core.profile /snap/core/current/sbin/apparmor_parser: unknown option (policy-features) in config file. AppArmor parser error for /tmp/core.profile in /etc/apparmor.d/tunables/etc at line 25: Could not open 'if' [1] $ sudo aa-status | grep test-core [1] # core18 $ cat /tmp/core18.profile #include <tunables/global> profile test-core18-parser { #include <abstractions/base> } $ sudo /snap/core18/current/sbin/apparmor_parser -r /tmp/core18.profile /snap/core18/current/sbin/apparmor_parser: unknown option (policy-features) in config file. AppArmor parser error for /tmp/core18.profile in /etc/apparmor.d/tunables/etc at line 25: Could not open 'if' [1] $ sudo aa-status | grep test-core18 [1] # core20 $ cat /tmp/core20.profile #include <tunables/global> profile test-core20-parser { #include <abstractions/base> } $ sudo /snap/core20/current/sbin/apparmor_parser -r /tmp/core20.profile /snap/core20/current/sbin/apparmor_parser: unknown option (policy-features) in config file. Warning from /tmp/core20.profile (/etc/apparmor.d/abstractions/base line 13): /snap/core20/current/sbin/apparmor_parser: Profile abi not supported, falling back to system abi. $ sudo aa-status | grep test-core20 test-core20-parser ** Affects: snapd Importance: Critical Assignee: Alex Murray (alexmurray) Status: Triaged ** Affects: snapd (Ubuntu) Importance: Critical Status: Triaged ** Changed in: snapd Status: New => Triaged ** Changed in: snapd Importance: Undecided => Critical ** Changed in: snapd Assignee: (unassigned) => Alex Murray (alexmurray) ** Also affects: snapd (Ubuntu) Importance: Undecided Status: New ** Changed in: snapd (Ubuntu) Status: New => Triaged ** Changed in: snapd (Ubuntu) Importance: Undecided => Critical ** Changed in: snapd (Ubuntu) Milestone: None => ubuntu-20.10 ** Description changed: The docker-support and multipass-support interfaces allow access to /sbin/apparmor_parser. /sbin/apparmor_parser is supplied by the core, core18 and core20 base snaps. /etc/apparmor* comes from the host, which on groovy has apparmor3. Snaps using docker-support and multipass-support are completely broken on groovy when using core and core18. On core20, policy loads with warnings. Transparent solution is to ship the /etc/apparmor and /etc/apparmor.d in the base snaps, and bind mount these into place (eg, via snap-confine). Snaps can fix themselves with layouts. Note, there are plans to vendor apparmor3 into snapd for cross-distro support and that will happen in the 21.04 cycle. However, that doesn't - fix snaps that plugs docker-support and multipass-support. - + fix snaps that plugs docker-support and multipass-support and load their + own policy. # core - $ cat /tmp/core.profile + $ cat /tmp/core.profile #include <tunables/global> profile test-core-profile { - #include <abstractions/base> - + #include <abstractions/base> } $ sudo /snap/core/current/sbin/apparmor_parser -r /tmp/core.profile /snap/core/current/sbin/apparmor_parser: unknown option (policy-features) in config file. AppArmor parser error for /tmp/core.profile in /etc/apparmor.d/tunables/etc at line 25: Could not open 'if' [1] $ sudo aa-status | grep test-core [1] - # core18 - $ cat /tmp/core18.profile + $ cat /tmp/core18.profile #include <tunables/global> profile test-core18-parser { - #include <abstractions/base> - + #include <abstractions/base> } $ sudo /snap/core18/current/sbin/apparmor_parser -r /tmp/core18.profile /snap/core18/current/sbin/apparmor_parser: unknown option (policy-features) in config file. AppArmor parser error for /tmp/core18.profile in /etc/apparmor.d/tunables/etc at line 25: Could not open 'if' [1] $ sudo aa-status | grep test-core18 [1] - # core20 - $ cat /tmp/core20.profile + $ cat /tmp/core20.profile #include <tunables/global> profile test-core20-parser { - #include <abstractions/base> - + #include <abstractions/base> } $ sudo /snap/core20/current/sbin/apparmor_parser -r /tmp/core20.profile /snap/core20/current/sbin/apparmor_parser: unknown option (policy-features) in config file. Warning from /tmp/core20.profile (/etc/apparmor.d/abstractions/base line 13): /snap/core20/current/sbin/apparmor_parser: Profile abi not supported, falling back to system abi. $ sudo aa-status | grep test-core20 - test-core20-parser + test-core20-parser -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1898038 Title: docker-support/multipass-support broken with system apparmor3 (20.10) To manage notifications about this bug go to: https://bugs.launchpad.net/snapd/+bug/1898038/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs