We discussed DBus APIs in relation to application confinement in various places and decided that services that require DBus mediation, click packaging and apparmor should all agree on how to derive an application-specific DBus path. The concept of the APP_ID is central to click, the SDK, application lifecycle, apparmor and DBus services that applications use. The APP_ID is of the form:
$pkgname_$appname_$version
and this is derived from the click manifest. Eg:
com.ubuntu.dropping-letters_dropping-letters_0.1.2.2
Application lifecycle will export the APP_ID to the environment. The click-apparmor hook creates the @{APP_ID_DBUS} variable in apparmor policy for use in dbus rules. click-apparmor uses nih_dbus_path() from libnih-dbus to generate the @{APP_ID_DBUS}. Eg, for com.ubuntu.dropping-letters_dropping-letters_0.1.2.2, we would have:
@{APP_ID_DBUS}="com_2eubuntu_2edropping_2dletters_5fdropping_2dletters_5f0_2e1_2e2_2e2"
This allows us to have rules like this in apparmor policy:
dbus (send)
bus=session
path="/com/canonical/hud/applications/@{APP_ID_DBUS}",
However, the HUD is generating a different value for its path, as seen in this dbus apparmor denial:
dbus[3390]: apparmor="DENIED" operation="dbus_method_call" bus="session" name=":1.641" path="/com/canonical/hud/applications/com_ubuntu_dropping_letters_dropping_letters_0_1_2_2" interface="org.freedesktop.DBus.Properties" member="GetAll" mask="send" pid=23875 profile="com.ubuntu.dropping-letters_dropping-letters_0.1.2.2" peer_pid=22913 peer_profile="unconfined"
Please adjust the hud to use libnih-dbus. Attached is a test C program to demonstrate how to do this.
We discussed DBus APIs in relation to application confinement in various places and decided that services that require DBus mediation, click packaging and apparmor should all agree on how to derive an application- specific DBus path. The concept of the APP_ID is central to click, the SDK, application lifecycle, apparmor and DBus services that applications use. The APP_ID is of the form: $appname_ $version
$pkgname_
and this is derived from the click manifest. Eg: dropping- letters_ dropping- letters_ 0.1.2.2
com.ubuntu.
Application lifecycle will export the APP_ID to the environment. The click-apparmor hook creates the @{APP_ID_DBUS} variable in apparmor policy for use in dbus rules. click-apparmor uses nih_dbus_path() from libnih-dbus to generate the @{APP_ID_DBUS}. Eg, for com.ubuntu. dropping- letters_ dropping- letters_ 0.1.2.2, we would have: ID_DBUS} ="com_2eubuntu_ 2edropping_ 2dletters_ 5fdropping_ 2dletters_ 5f0_2e1_ 2e2_2e2"
@{APP_
This allows us to have rules like this in apparmor policy: "/com/canonical /hud/applicatio ns/@{APP_ ID_DBUS} ",
dbus (send)
bus=session
path=
However, the HUD is generating a different value for its path, as seen in this dbus apparmor denial: "dbus_method_ call" bus="session" name=":1.641" path="/ com/canonical/ hud/application s/com_ubuntu_ dropping_ letters_ dropping_ letters_ 0_1_2_2" interface= "org.freedeskto p.DBus. Properties" member="GetAll" mask="send" pid=23875 profile= "com.ubuntu. dropping- letters_ dropping- letters_ 0.1.2.2" peer_pid=22913 peer_profile= "unconfined"
dbus[3390]: apparmor="DENIED" operation=
Please adjust the hud to use libnih-dbus. Attached is a test C program to demonstrate how to do this.