¿Cómo personalizar localmente un perfil de apparmor?

¿Cómo personalizar localmente un perfil de apparmor?

Me gustaría ejecutar Firefox con el perfil de aplicación aa-enforce(d). Esto funciona bien, excepto que tengo un complemento que necesita acceso al llavero a través de dbus. Cuando el complemento (https://github.com/swick/moz-gnome-keyring-integration) intenta acceder al conjunto de claves, aparece este mensaje en los registros:

[ apparmor="DENIED" operation="dbus_method_call" bus="session" path="/org/freedesktop/secrets" interface="org.freedesktop.DBus.Properties" member="Get" mask="send" name="org.freedesktop.secrets" pid=20004 profile="/usr/lib/firefox/firefox{,*[^s][^h]}" peer_pid=2810 peer_profile="unconfined"]

Entonces estoy tratando deotorgar acceso a dbusa mi perfil de Firefox, sin alterar el perfil base proporcionado por el paquete apparmor-profies, así que modifiqué el archivo en formato /etc/apparamor.d/local/usr.bin.firefox.

Esto es lo que probé:

# Site-specific additions and overrides for usr.bin.firefox.
# For more details, please see /etc/apparmor.d/local/README.
# Allow gnome keyring integration to work
/usr/lib/firefox/firefox{,*[^s][^h]} {
  dbus (send,receive)
    bus=session
    interface=org.freedesktop.DBus.Properties
    path=/org/freedesktop/secrets,
}

pero luego, en aa-enforce usr.bin.firefox, aparece este error:

apparmor.common.AppArmorException: 'local/usr.bin.firefox profile in local/usr.bin.firefox contains syntax errors in line: 4.'

Esta es la primera vez que intento crear o modificar un perfil de apparmor y estoy atascado aquí... ¿Cuál debería ser la sintaxis?

EDITAR: usando apparmor_parser, obtuve otro poco de información:

AppArmor parser error for /etc/apparmor.d/usr.bin.firefox in /etc/apparmor.d/local/usr.bin.firefox at line 4: syntax error, unexpected TOK_OPEN, expecting TOK_MODE

Entonces, TOK_OPEN inesperado, esperando TOK_MODE... aún no tengo idea de lo que significa.

EDITAR2: Probé la misma estrofa directamente dentro del perfil /etc/apparmor.d/usr.bin.firefox y funciona. Entonces el problema tiene que ver con el uso de la personalización local...

Respuesta1

El problema surge de los corchetes de apertura ( {y }). La #includedeclaración ya está dentro de la declaración del perfil principal, por lo que los corchetes no son necesarios.

# Site-specific additions and overrides for usr.bin.firefox.
# For more details, please see /etc/apparmor.d/local/README.
# Allow gnome keyring integration to work

dbus (send,receive)
  bus=session
  interface=org.freedesktop.DBus.Properties
  path=/org/freedesktop/secrets,

información relacionada