feat(profiles): improve dbus integration.

This commit is contained in:
Alexandre Pujol 2023-07-20 21:00:41 +01:00
parent 33a9b062ff
commit d2a650f6c6
No known key found for this signature in database
GPG key ID: C5469996F0DF68EC
19 changed files with 77 additions and 66 deletions

View file

@ -5,6 +5,16 @@
# Permissions for querying dconf settings with write access; use the dconf # Permissions for querying dconf settings with write access; use the dconf
# abstraction first, and dconf-write only for specific application's profile. # abstraction first, and dconf-write only for specific application's profile.
dbus send bus=session path=/ca/desrt/dconf/Writer/user
interface=ca.desrt.dconf.Writer
member=Change
peer=(name=ca.desrt.dconf), # no peer's labels
dbus receive bus=session path=/ca/desrt/dconf/Writer/user
interface=ca.desrt.dconf.Writer
member=Notify
peer=(name=:*, label=dconf-service),
/etc/dconf/** r, /etc/dconf/** r,
owner @{user_config_dirs}/dconf/user r, owner @{user_config_dirs}/dconf/user r,

View file

@ -1,32 +1,40 @@
# apparmor.d - Full set of apparmor profiles # apparmor.d - Full set of apparmor profiles
# Copyright (C) 2019-2021 Mikhail Morfikov # Copyright (C) 2019-2021 Mikhail Morfikov
# Copyright (C) 2021-2023 Alexandre Pujol <alexandre@pujol.io>
# SPDX-License-Identifier: GPL-2.0-only # SPDX-License-Identifier: GPL-2.0-only
abi <abi/3.0>, @{lib}/frei0r-[0-9]/*.so mr,
@{lib}/gstreamer-[0-9]*.[0-9]*/gst-plugin-scanner{,x86_64} mrix,
@{lib}/@{multiarch}/gstreamer[0-9]*.[0-9]*/gstreamer-[0-9]*.[0-9]*/gst-plugin-scanner{,x86_64} mrix,
@{lib}/@{multiarch}/libproxy/*/modules/*.so mr,
@{lib}/@{multiarch}/libproxy/*/pxgsettings ixr,
@{lib}/@{multiarch}/libvisual-[0-9].[0-9]/*/*.so mr,
/etc/openni2/OpenNI.ini r, /etc/openni2/OpenNI.ini r,
/tmp/ r, owner @{HOME}/{.cache/,.}gstreamer-[0-9]*/ rw,
owner @{HOME}/{.cache/,.}gstreamer-[0-9]*/registry.*.bin{,.tmp*} rw,
/tmp/ r,
/var/tmp/ r, /var/tmp/ r,
/dev/ r, # The orcexec.* file is JIT compiled code for various GStreamer elements.
/dev/bus/usb/ r, # If one is blocked the next is used instead.
/dev/dri/ r, # The orcexec file is placed under /home/user/ also when the /tmp/ dir is mounted with the noexec flag.
owner @{run}/user/@{uid}/orcexec.* mrw,
#owner /tmp/orcexec.* mrw,
#owner @{HOME}/orcexec.* mrw,
# /dev/shm is a symlink to /run/shm on ubuntu @{run}/udev/data/+drm:* r, # For screen outputs
#owner /{dev,run}/shm/shmfd-* rw, @{run}/udev/data/+usb:* r, # For /dev/bus/usb/**
#
@{run}/udev/data/c81:[0-9]* r, # For video4linux @{run}/udev/data/c81:[0-9]* r, # For video4linux
@{run}/udev/data/c189:[0-9]* r, # For USB serial converters @{run}/udev/data/c189:[0-9]* r, # For USB serial converters
@{run}/udev/data/c226:[0-9]* r, # For /dev/dri/card[0-9]* @{run}/udev/data/c226:[0-9]* r, # For /dev/dri/card[0-9]*
@{run}/udev/data/+drm:* r, # For screen outputs
#@{run}/udev/data/+pci:* r,
@{run}/udev/data/+usb:* r, # For /dev/bus/usb/**
@{sys}/bus/ r, @{sys}/bus/ r,
@{sys}/bus/usb/devices/ r,
@{sys}/bus/media/devices/ r, @{sys}/bus/media/devices/ r,
@{sys}/bus/usb/devices/ r,
@{sys}/class/ r, @{sys}/class/ r,
@{sys}/class/drm/ r, @{sys}/class/drm/ r,
@{sys}/class/video4linux/ r, @{sys}/class/video4linux/ r,
@ -34,22 +42,8 @@
@{sys}/devices/system/node/ r, @{sys}/devices/system/node/ r,
@{sys}/devices/system/node/node[0-9]*/meminfo r, @{sys}/devices/system/node/node[0-9]*/meminfo r,
# The orcexec.* file is JIT compiled code for various GStreamer elements. /dev/ r,
# If one is blocked the next is used instead. /dev/bus/usb/ r,
# The orcexec file is placed under /home/user/ also when the /tmp/ dir is mounted with the noexec /dev/dri/ r,
# flag.
owner @{run}/user/@{uid}/orcexec.* mrw,
#owner /tmp/orcexec.* mrw,
#owner @{HOME}/orcexec.* mrw,
@{lib}/frei0r-[0-9]/*.so mr,
@{lib}/gstreamer-[0-9]*.[0-9]*/gst-plugin-scanner mrix,
@{lib}/@{multiarch}/gstreamer[0-9]*.[0-9]*/gstreamer-[0-9]*.[0-9]*/gst-plugin-scanner mrix,
@{lib}/@{multiarch}/libproxy/*/modules/*.so mr,
@{lib}/@{multiarch}/libproxy/*/pxgsettings ixr,
@{lib}/@{multiarch}/libvisual-[0-9].[0-9]/*/*.so mr,
owner @{HOME}/{.cache/,.}gstreamer-[0-9]*/ rw,
owner @{HOME}/{.cache/,.}gstreamer-[0-9]*/registry.*.bin{,.tmp*} rw,
include if exists <abstractions/gstreamer.d> include if exists <abstractions/gstreamer.d>

View file

@ -50,7 +50,7 @@ profile colord @{exec_path} flags=(attach_disconnected) {
dbus receive bus=system path=/org/freedesktop/ColorManager/** dbus receive bus=system path=/org/freedesktop/ColorManager/**
interface=org.freedesktop.DBus.Properties interface=org.freedesktop.DBus.Properties
member=GetAll member=GetAll
peer=(name=:*, label=@{profile_name}), peer=(name=:*, label="{@{profile_name},gsd-color}"),
dbus bind bus=system dbus bind bus=system
name=org.freedesktop.ColorManager, name=org.freedesktop.ColorManager,

View file

@ -13,6 +13,7 @@ profile pulseaudio @{exec_path} {
include <abstractions/base> include <abstractions/base>
include <abstractions/audio> include <abstractions/audio>
include <abstractions/consoles> include <abstractions/consoles>
include <abstractions/dbus-gtk>
include <abstractions/dbus-session-strict> include <abstractions/dbus-session-strict>
include <abstractions/dbus-strict> include <abstractions/dbus-strict>
include <abstractions/dconf-write> include <abstractions/dconf-write>

View file

@ -107,6 +107,16 @@ profile xdg-desktop-portal-gnome @{exec_path} {
member=GetAll member=GetAll
peer=(name=:*, label=gnome-shell), peer=(name=:*, label=gnome-shell),
dbus send bus=session path=/org/gtk/vfs/mounttracker
interface=org.gtk.vfs.MountTracker
member=ListMountableInfo
peer=(name=:*, label=gvfsd),
dbus receive bus=session path=/org/freedesktop/portal/desktop
interface=org.freedesktop.impl.portal.Settings
member=Read
peer=(name=:*, label=xdg-desktop-portal),
dbus receive bus=session path=/ dbus receive bus=session path=/
interface=org.freedesktop.DBus.Introspectable interface=org.freedesktop.DBus.Introspectable
member=Introspect member=Introspect

View file

@ -395,16 +395,6 @@ profile gnome-shell @{exec_path} flags=(attach_disconnected) {
member=GetAll member=GetAll
peer=(name=:*, label=gnome-extension-ding), peer=(name=:*, label=gnome-extension-ding),
dbus send bus=session path=/ca/desrt/dconf/Writer/user
interface=ca.desrt.dconf.Writer
member=Change
peer=(name=ca.desrt.dconf), # no peer's labels
dbus receive bus=session path=/ca/desrt/dconf/Writer/user
interface=ca.desrt.dconf.Writer
member=Notify
peer=(name=:*, label=dconf-service),
dbus send bus=session path=/org/gnome/ControlCenter dbus send bus=session path=/org/gnome/ControlCenter
interface=org.gtk.Actions interface=org.gtk.Actions
member=DescribeAll member=DescribeAll

View file

@ -9,6 +9,7 @@ include <tunables/global>
@{exec_path} = @{lib}/tracker-miner-fs-{,control-}3 @{exec_path} = @{lib}/tracker-miner-fs-{,control-}3
profile tracker-miner @{exec_path} flags=(attach_disconnected) { profile tracker-miner @{exec_path} flags=(attach_disconnected) {
include <abstractions/base> include <abstractions/base>
include <abstractions/dbus-gtk>
include <abstractions/dbus-session-strict> include <abstractions/dbus-session-strict>
include <abstractions/dbus-strict> include <abstractions/dbus-strict>
include <abstractions/dconf-write> include <abstractions/dconf-write>
@ -36,16 +37,6 @@ profile tracker-miner @{exec_path} flags=(attach_disconnected) {
member={ListMonitorImplementations,ListMountableInfo} member={ListMonitorImplementations,ListMountableInfo}
peer=(name=:*, label=gvfsd), peer=(name=:*, label=gvfsd),
dbus send bus=session path=/org/gtk/vfs/mounttracker
interface=org.gtk.vfs.MountTracker
member=ListMountableInfo
peer=(name=:*, label=gvfsd),
dbus receive bus=session path=/org/gtk/vfs/mounttracker
interface=org.gtk.vfs.MountTracker
member=Mounted
peer=(name=:*, label=gvfsd),
dbus send bus=session path=/org/gtk/Private/RemoteVolumeMonitor dbus send bus=session path=/org/gtk/Private/RemoteVolumeMonitor
interface=org.gtk.Private.RemoteVolumeMonitor interface=org.gtk.Private.RemoteVolumeMonitor
member={List,IsSupported} member={List,IsSupported}

View file

@ -42,12 +42,17 @@ profile gvfs-udisks2-volume-monitor @{exec_path} flags=(attach_disconnected) {
member=ListMountableInfo member=ListMountableInfo
peer=(name=:*, label=gvfsd), peer=(name=:*, label=gvfsd),
dbus send bus=session path=/org/gtk/Private/RemoteVolumeMonitor
interface=org.gtk.Private.RemoteVolumeMonitor
member=MountAdded
peer=(name=org.freedesktop.DBus, label=tracker-*),
dbus receive bus=session path=/org/gtk/Private/RemoteVolumeMonitor dbus receive bus=session path=/org/gtk/Private/RemoteVolumeMonitor
interface=org.gtk.Private.RemoteVolumeMonitor interface=org.gtk.Private.RemoteVolumeMonitor
member={List,IsSupported} member={List,IsSupported}
peer=(name=:*, label="{gnome-shell,gnome-control-center,gnome-extension-ding,tracker-*,unconfined}"), peer=(name=:*, label="{gnome-shell,gnome-control-center,gnome-extension-ding,tracker-*,unconfined}"),
dbus receive bus=session path=/{,org} dbus receive bus=session path=/{,org,org/gtk,org/gtk/Private,org/gtk/Private/RemoteVolumeMonitor}
interface=org.freedesktop.DBus.Introspectable interface=org.freedesktop.DBus.Introspectable
member=Introspect member=Introspect
peer=(name=:*, label=gnome-shell), peer=(name=:*, label=gnome-shell),

View file

@ -9,6 +9,7 @@ include <tunables/global>
@{exec_path} = @{bin}/kwin_x11 @{exec_path} = @{bin}/kwin_x11
profile kwin_x11 @{exec_path} { profile kwin_x11 @{exec_path} {
include <abstractions/base> include <abstractions/base>
include <abstractions/dbus-strict>
include <abstractions/dri-common> include <abstractions/dri-common>
include <abstractions/dri-enumerate> include <abstractions/dri-enumerate>
include <abstractions/fonts> include <abstractions/fonts>

View file

@ -13,6 +13,7 @@ profile plasmashell @{exec_path} {
include <abstractions/audio> include <abstractions/audio>
include <abstractions/consoles> include <abstractions/consoles>
include <abstractions/dbus-session-strict> include <abstractions/dbus-session-strict>
include <abstractions/dbus-strict>
include <abstractions/disks-read> include <abstractions/disks-read>
include <abstractions/dri-common> include <abstractions/dri-common>
include <abstractions/dri-enumerate> include <abstractions/dri-enumerate>

View file

@ -84,6 +84,11 @@ profile NetworkManager @{exec_path} flags=(attach_disconnected) {
interface=org.freedesktop.DBus.ObjectManager interface=org.freedesktop.DBus.ObjectManager
member=GetManagedObjects, member=GetManagedObjects,
dbus receive bus=system path=/org/bluez/hci*/**
interface=org.freedesktop.DBus.Properties
member=PropertiesChanged
peer=(name=:*),
dbus bind bus=system dbus bind bus=system
name=org.freedesktop.NetworkManager, name=org.freedesktop.NetworkManager,

View file

@ -10,6 +10,7 @@ include <tunables/global>
profile check-new-release-gtk @{exec_path} { profile check-new-release-gtk @{exec_path} {
include <abstractions/base> include <abstractions/base>
include <abstractions/apt-common> include <abstractions/apt-common>
include <abstractions/dbus-accessibility-strict>
include <abstractions/dbus-session-strict> include <abstractions/dbus-session-strict>
include <abstractions/dconf-write> include <abstractions/dconf-write>
include <abstractions/fonts> include <abstractions/fonts>

View file

@ -9,6 +9,7 @@ include <tunables/global>
@{exec_path} = @{lib}/update-notifier/livepatch-notification @{exec_path} = @{lib}/update-notifier/livepatch-notification
profile livepatch-notification @{exec_path} { profile livepatch-notification @{exec_path} {
include <abstractions/base> include <abstractions/base>
include <abstractions/dbus-accessibility-strict>
include <abstractions/dbus-session-strict> include <abstractions/dbus-session-strict>
include <abstractions/dconf-write> include <abstractions/dconf-write>
include <abstractions/gtk> include <abstractions/gtk>

View file

@ -9,6 +9,7 @@ include <tunables/global>
@{exec_path} = @{lib}/update-notifier/ubuntu-advantage-notification @{exec_path} = @{lib}/update-notifier/ubuntu-advantage-notification
profile ubuntu-advantage-notification @{exec_path} { profile ubuntu-advantage-notification @{exec_path} {
include <abstractions/base> include <abstractions/base>
include <abstractions/dbus-accessibility-strict>
include <abstractions/dbus-session-strict> include <abstractions/dbus-session-strict>
include <abstractions/dconf-write> include <abstractions/dconf-write>
include <abstractions/gtk> include <abstractions/gtk>

View file

@ -11,6 +11,7 @@ profile update-notifier @{exec_path} {
include <abstractions/base> include <abstractions/base>
include <abstractions/apt-common> include <abstractions/apt-common>
include <abstractions/audio> include <abstractions/audio>
include <abstractions/dbus-accessibility-strict>
include <abstractions/dbus-session-strict> include <abstractions/dbus-session-strict>
include <abstractions/dconf-write> include <abstractions/dconf-write>
include <abstractions/fonts> include <abstractions/fonts>

View file

@ -9,30 +9,25 @@ include <tunables/global>
@{exec_path} = @{bin}/engrampa @{exec_path} = @{bin}/engrampa
profile engrampa @{exec_path} { profile engrampa @{exec_path} {
include <abstractions/base> include <abstractions/base>
include <abstractions/dconf-write>
include <abstractions/X-strict>
include <abstractions/gtk>
include <abstractions/fonts>
include <abstractions/fontconfig-cache-read>
include <abstractions/freedesktop.org>
include <abstractions/nameservice-strict>
include <abstractions/user-download-strict>
include <abstractions/thumbnails-cache-read>
include <abstractions/dbus-session-strict>
include <abstractions/dbus-accessibility-strict> include <abstractions/dbus-accessibility-strict>
include <abstractions/dbus-gtk> include <abstractions/dbus-gtk>
include <abstractions/dbus-session-strict>
include <abstractions/dconf-write>
include <abstractions/fontconfig-cache-read>
include <abstractions/fonts>
include <abstractions/freedesktop.org>
include <abstractions/gtk>
include <abstractions/ibus> include <abstractions/ibus>
include <abstractions/nameservice-strict>
include <abstractions/thumbnails-cache-read>
include <abstractions/user-download-strict>
include <abstractions/X-strict>
dbus send bus=session path=/org/freedesktop/DBus dbus send bus=session path=/org/freedesktop/DBus
interface=org.freedesktop.DBus interface=org.freedesktop.DBus
member=GetId member=GetId
peer=(name=org.freedesktop.DBus, label=dbus-daemon), peer=(name=org.freedesktop.DBus, label=dbus-daemon),
dbus send bus=session path=/ca/desrt/dconf/Writer/user
interface=ca.desrt.dconf.Writer
member={Change,Notify}
peer=(name=ca.desrt.dconf),
dbus send bus=session path=/org/gtk/Private/RemoteVolumeMonitor dbus send bus=session path=/org/gtk/Private/RemoteVolumeMonitor
interface=org.gtk.Private.RemoteVolumeMonitor interface=org.gtk.Private.RemoteVolumeMonitor
member={IsSupported,List} member={IsSupported,List}

View file

@ -9,6 +9,7 @@ include <tunables/global>
@{exec_path} = @{bin}/file-roller @{exec_path} = @{bin}/file-roller
profile file-roller @{exec_path} { profile file-roller @{exec_path} {
include <abstractions/base> include <abstractions/base>
include <abstractions/dbus-accessibility-strict>
include <abstractions/dbus-session-strict> include <abstractions/dbus-session-strict>
include <abstractions/dconf-write> include <abstractions/dconf-write>
include <abstractions/fonts> include <abstractions/fonts>

View file

@ -10,6 +10,8 @@ include <tunables/global>
@{exec_path} = @{bin}/keepassxc @{exec_path} = @{bin}/keepassxc
profile keepassxc @{exec_path} { profile keepassxc @{exec_path} {
include <abstractions/base> include <abstractions/base>
include <abstractions/dbus-session-strict>
include <abstractions/dbus-strict>
include <abstractions/dconf-write> include <abstractions/dconf-write>
include <abstractions/devices-usb> include <abstractions/devices-usb>
include <abstractions/dri-common> include <abstractions/dri-common>

View file

@ -9,6 +9,7 @@ include <tunables/global>
@{exec_path} = @{bin}/qemu-ga @{exec_path} = @{bin}/qemu-ga
profile qemu-ga @{exec_path} { profile qemu-ga @{exec_path} {
include <abstractions/base> include <abstractions/base>
include <abstractions/dbus-strict>
capability mknod, capability mknod,
capability net_admin, capability net_admin,