AA-EASYPROF(8) AppArmor AA-EASYPROF(8) (NAME) aa-easyprof - AppArmor. (SYNOPSIS) aa-easyprof [] < > (DESCRIPTION) aa-easyprof (policy) AppArmor . aa-easyprof (templates) (policy groups) . (abstractions) . aa-genprof aa-logprof . (OPTIONS) aa-easyprof : -t TEMPLATE, --template=TEMPLATE . /usr/share/apparmor/easyprof/templates . /usr/share/apparmor/easyprof/templates/default . -p POLICYGROUPS, --policy-groups=POLICYGROUPS POLICY . --list-templates . /usr/share/apparmor/easyprof/policy . AppArmor . (abstractions) AppArmor . --parser PATH (PATH) apparmor_parser . aa-easyprof /sbin/apparmor_parser . -a ABSTRACTIONS, --abstractions=ABSTRACTIONS ABSTRACTIONS AppArmor . . AppArmor /etc/apparmor.d/abstractions . apparmor.d(5) . -b PATH, --base=PATH PATH --abstractions. apparmor_parser(8) . -I PATH, --Include=PATH PATH --abstractions. apparmor_parser(8) . -r PATH, --read-path=PATH PATH (owner reads). . PATH '/' . '/*' PATH PATH . -w PATH, --write-dir=PATH --read-path . -n NAME, --name=NAME NAME . NAME . (NAME) (metadata) AppArmor . --profile-name=PROFILENAME AppArmor . 'profile PROFILENAME' . 'profile PROFILENAME BINARY' . (profile attachment) . --template-var="@{VAR}=VALUE" VAR VALUE . . . --list-templates . --show-template --template. --templates-dir=PATH PATH . --include-templates-dir=PATH PATH ( --templates-dir). PATH . --list-policy-groups . --show-policy-group --policy-groups. --policy-groups-dir=PATH PATH . --include-policy-groups-dir=PATH PATH ( --policy-groups-dir). PATH . --policy-version=VERSION --policy-vendor . aa-easyprof VENDOR/VERSION . JSON (JSON Number) . : $ aa-easyprof --templates-dir=/usr/share/apparmor/easyprof/templates \ --policy-groups-dir=/usr/share/apparmor/easyprof/policygroups \ --policy-vendor="foo" \ --policy-version=1.0 /usr/share/apparmor/easyprof/templates/foo/1.0 /usr/share/apparmor/easyprof/policygroups/foo/1.0 . --policy-vendor=VENDOR --policy-version (vendor) . --policy-version . --author . --copyright () . --comment / . -m MANIFEST, --manifest=MANIFEST aa-easyprof JSON . JSON . JSON : { "security": { "profiles": { "": { ... attributes specific to this profile ... }, "": { ... } } } } JSON ( ) . JSON "security" . : { "security": { "profiles": { "com.example.foo": { "abstractions": [ "audio", "gnome" ], "author": "Your Name", "binary": "/opt/foo/**", "comment": "Unstructured single-line comment", "copyright": "Unstructured single-line copyright statement", "name": "My Foo App", "policy_groups": [ "networking", "user-application" ], "policy_vendor": "somevendor", "policy_version": 1.0, "read_path": [ "/tmp/foo_r", "/tmp/bar_r/" ], "template": "user-application", "template_variables": { "APPNAME": "foo", "VAR1": "bar", "VAR2": "baz" }, "write_path": [ "/tmp/foo_w", "/tmp/bar_w/" ] } } } } . Ubuntu SDK : { "security": { "profiles": { "com.ubuntu.developer.myusername.MyCoolApp": { "policy_groups": [ "networking", "online-accounts" ], "policy_vendor": "ubuntu", "policy_version": 1.0, "template": "ubuntu-sdk", "template_variables": { "APPNAME": "MyCoolApp", "APPVERSION": "0.1.2" } } } } } --verify-manifest --manifest . --output-format=FORMAT text ( ) AppArmor json JSON. --output-directory=DIR . stdout . (EXAMPLES) 'foo' /opt/foo : $ aa-easyprof --template=user-application --template-var="@{APPNAME}=foo" \ --policy-groups=opt-application,user-application \ /opt/foo/bin/FooApp : $ aa-easyprof --manifest=manifest.json aa-easyprof: $ aa-easyprof --output-format=json \ --author="Your Name" \ --comment="Unstructured single-line comment" \ --copyright="Unstructured single-line copyright statement" \ --name="My Foo App" \ --profile-name="com.example.foo" \ --template="user-application" \ --policy-groups="user-application,networking" \ --abstractions="audio,gnome" \ --read-path="/tmp/foo_r" \ --read-path="/tmp/bar_r/" \ --write-path="/tmp/foo_w" \ --write-path=/tmp/bar_w/ \ --template-var="@{APPNAME}=foo" \ --template-var="@{VAR1}=bar" \ --template-var="@{VAR2}=baz" \ "/opt/foo/**" (BUGS) : (SEE ALSO) apparmor(7) apparmor.d(5) AppArmor 4.1.7 2026-03-10 AA-EASYPROF(8)