feat(abs): add the sqlite abstraction.

This commit is contained in:
Alexandre Pujol 2025-08-19 21:43:20 +02:00
parent 24f629d326
commit 5e5fde7741
No known key found for this signature in database
GPG key ID: C5469996F0DF68EC
18 changed files with 41 additions and 37 deletions

View file

@ -28,6 +28,7 @@
include <abstractions/nameservice-strict> include <abstractions/nameservice-strict>
include <abstractions/p11-kit> include <abstractions/p11-kit>
include <abstractions/path> include <abstractions/path>
include <abstractions/sqlite>
include <abstractions/ssl_certs> include <abstractions/ssl_certs>
include <abstractions/video> include <abstractions/video>
@ -63,7 +64,6 @@
owner @{tmp}/** rmwk, owner @{tmp}/** rmwk,
owner /dev/shm/** rwlk -> /dev/shm/**, owner /dev/shm/** rwlk -> /dev/shm/**,
owner /var/cache/tmp/** rwlk -> /var/cache/tmp/**, owner /var/cache/tmp/** rwlk -> /var/cache/tmp/**,
owner /var/tmp/etilqs_@{sqlhex} rw,
@{att}/@{run}/systemd/inhibit/@{int}.ref rw, @{att}/@{run}/systemd/inhibit/@{int}.ref rw,

View file

@ -0,0 +1,23 @@
# apparmor.d - Full set of apparmor profiles
# Copyright (C) 2025 Alexandre Pujol <alexandre@pujol.io>
# SPDX-License-Identifier: GPL-2.0-only
# SQlite temporary files (hexadecimal from 12 to 16 characters)
abi <abi/4.0>,
owner /var/tmp/etilqs_@{hex12} rw,
owner /var/tmp/etilqs_@{hex12}@{h} rw,
owner /var/tmp/etilqs_@{hex12}@{hex2} rw,
owner /var/tmp/etilqs_@{hex15} rw,
owner /var/tmp/etilqs_@{hex16} rw,
owner @{tmp}/etilqs_@{hex12} rw,
owner @{tmp}/etilqs_@{hex12}@{h} rw,
owner @{tmp}/etilqs_@{hex12}@{hex2} rw,
owner @{tmp}/etilqs_@{hex15} rw,
owner @{tmp}/etilqs_@{hex16} rw,
include if exists <abstractions/sqlite.d>
# vim:syntax=apparmor

View file

@ -17,6 +17,7 @@ profile gnome-music @{exec_path} flags=(attach_disconnected) {
include <abstractions/nameservice-strict> include <abstractions/nameservice-strict>
include <abstractions/p11-kit> include <abstractions/p11-kit>
include <abstractions/python> include <abstractions/python>
include <abstractions/sqlite>
include <abstractions/ssl_certs> include <abstractions/ssl_certs>
network inet stream, network inet stream,
@ -51,8 +52,6 @@ profile gnome-music @{exec_path} flags=(attach_disconnected) {
@{att}/@{run}/systemd/inhibit/@{int}.ref rw, @{att}/@{run}/systemd/inhibit/@{int}.ref rw,
owner @{tmp}/grilo-plugin-cache-[0-9A-Z]*/ rw, owner @{tmp}/grilo-plugin-cache-[0-9A-Z]*/ rw,
owner @{tmp}/etilqs_@{sqlhex} rw,
owner /var/tmp/etilqs_@{sqlhex} rw,
@{PROC}/sys/net/ipv6/conf/all/disable_ipv6 r, @{PROC}/sys/net/ipv6/conf/all/disable_ipv6 r,
owner @{PROC}/@{pid}/mounts r, owner @{PROC}/@{pid}/mounts r,

View file

@ -23,6 +23,7 @@ profile localsearch @{exec_path} flags=(attach_disconnected) {
include <abstractions/graphics> include <abstractions/graphics>
include <abstractions/gstreamer> include <abstractions/gstreamer>
include <abstractions/nameservice-strict> include <abstractions/nameservice-strict>
include <abstractions/sqlite>
network netlink raw, network netlink raw,
@ -56,9 +57,6 @@ profile localsearch @{exec_path} flags=(attach_disconnected) {
owner @{user_cache_dirs}/tracker3/files/ rw, owner @{user_cache_dirs}/tracker3/files/ rw,
owner @{user_cache_dirs}/tracker3/files/** rwk, owner @{user_cache_dirs}/tracker3/files/** rwk,
owner @{tmp}/etilqs_@{sqlhex} rw,
owner /var/tmp/etilqs_@{sqlhex} rw,
@{run}/mount/utab r, @{run}/mount/utab r,
@{run}/udev/data/c@{dynamic}:@{int} r, # For dynamic assignment range 234 to 254, 384 to 511 @{run}/udev/data/c@{dynamic}:@{int} r, # For dynamic assignment range 234 to 254, 384 to 511

View file

@ -21,6 +21,7 @@ profile tracker-miner @{exec_path} flags=(attach_disconnected) {
include <abstractions/gnome-strict> include <abstractions/gnome-strict>
include <abstractions/gstreamer> include <abstractions/gstreamer>
include <abstractions/nameservice-strict> include <abstractions/nameservice-strict>
include <abstractions/sqlite>
network netlink raw, network netlink raw,
@ -63,9 +64,6 @@ profile tracker-miner @{exec_path} flags=(attach_disconnected) {
owner @{gdm_config_dirs}/dconf/user r, owner @{gdm_config_dirs}/dconf/user r,
owner @{gdm_share_dirs}/applications/ r, owner @{gdm_share_dirs}/applications/ r,
owner @{tmp}/etilqs_@{sqlhex} rw,
owner /var/tmp/etilqs_@{sqlhex} rw,
# Allow to search user files # Allow to search user files
owner @{HOME}/{,**} r, owner @{HOME}/{,**} r,
owner @{MOUNTS}/{,**} r, owner @{MOUNTS}/{,**} r,

View file

@ -23,6 +23,7 @@ profile dropbox @{exec_path} {
include <abstractions/nameservice-strict> include <abstractions/nameservice-strict>
include <abstractions/python> include <abstractions/python>
include <abstractions/qt5-settings-write> include <abstractions/qt5-settings-write>
include <abstractions/sqlite>
include <abstractions/ssl_certs> include <abstractions/ssl_certs>
@{exec_path} mr, @{exec_path} mr,
@ -61,8 +62,6 @@ profile dropbox @{exec_path} {
# Dropbox first tries the /tmp/ dir, and if it's denied it uses the /var/tmp/ dir instead # Dropbox first tries the /tmp/ dir, and if it's denied it uses the /var/tmp/ dir instead
owner @{tmp}/dropbox-antifreeze-* rw, owner @{tmp}/dropbox-antifreeze-* rw,
owner @{tmp}/#@{int} rw, owner @{tmp}/#@{int} rw,
owner @{tmp}/etilqs_@{sqlhex} rw,
owner /var/tmp/etilqs_@{sqlhex} rw,
@{run}/systemd/users/@{uid} r, @{run}/systemd/users/@{uid} r,

View file

@ -13,6 +13,7 @@ profile fractal @{exec_path} flags=(attach_disconnected) {
include <abstractions/common/gnome> include <abstractions/common/gnome>
include <abstractions/gstreamer> include <abstractions/gstreamer>
include <abstractions/nameservice-strict> include <abstractions/nameservice-strict>
include <abstractions/sqlite>
include <abstractions/ssl_certs> include <abstractions/ssl_certs>
network inet dgram, network inet dgram,
@ -34,7 +35,6 @@ profile fractal @{exec_path} flags=(attach_disconnected) {
owner @{tmp}/.@{rand6} rw, owner @{tmp}/.@{rand6} rw,
owner @{tmp}/.goutputstream-@{rand6} rw, owner @{tmp}/.goutputstream-@{rand6} rw,
owner @{tmp}/@{rand6} rw, owner @{tmp}/@{rand6} rw,
owner @{tmp}/etilqs_@{sqlhex} rw,
owner @{run}/user/@{uid}/fractal/{,**} rw, owner @{run}/user/@{uid}/fractal/{,**} rw,

View file

@ -18,6 +18,7 @@ profile fwupd @{exec_path} flags=(attach_disconnected,complain) {
include <abstractions/disks-write> include <abstractions/disks-write>
include <abstractions/fonts> include <abstractions/fonts>
include <abstractions/nameservice-strict> include <abstractions/nameservice-strict>
include <abstractions/sqlite>
capability dac_override, capability dac_override,
capability dac_read_search, capability dac_read_search,
@ -77,7 +78,6 @@ profile fwupd @{exec_path} flags=(attach_disconnected,complain) {
@{MOUNTDIRS}/*/{,@{efi}/}EFI/{,**} r, @{MOUNTDIRS}/*/{,@{efi}/}EFI/{,**} r,
/var/lib/flatpak/exports/share/mime/mime.cache r, /var/lib/flatpak/exports/share/mime/mime.cache r,
/var/tmp/etilqs_@{sqlhex} rw,
owner /var/cache/fwupd/ rw, owner /var/cache/fwupd/ rw,
owner /var/cache/fwupd/** rwk, owner /var/cache/fwupd/** rwk,
owner /var/lib/fwupd/ rw, owner /var/lib/fwupd/ rw,

View file

@ -11,10 +11,11 @@ include <tunables/global>
profile gpo @{exec_path} { profile gpo @{exec_path} {
include <abstractions/base> include <abstractions/base>
include <abstractions/consoles> include <abstractions/consoles>
include <abstractions/python>
include <abstractions/nameservice-strict> include <abstractions/nameservice-strict>
include <abstractions/user-download-strict> include <abstractions/python>
include <abstractions/sqlite>
include <abstractions/ssl_certs> include <abstractions/ssl_certs>
include <abstractions/user-download-strict>
network inet dgram, network inet dgram,
network inet6 dgram, network inet6 dgram,
@ -36,9 +37,6 @@ profile gpo @{exec_path} {
owner @{HOME}/gPodder/ rw, owner @{HOME}/gPodder/ rw,
owner @{HOME}/gPodder/** rwk, owner @{HOME}/gPodder/** rwk,
owner @{tmp}/etilqs_@{sqlhex} rw,
owner /var/tmp/etilqs_@{sqlhex} rw,
owner @{PROC}/@{pid}/fd/ r, owner @{PROC}/@{pid}/fd/ r,
include if exists <local/gpo> include if exists <local/gpo>

View file

@ -14,6 +14,7 @@ profile gpodder @{exec_path} {
include <abstractions/fontconfig-cache-read> include <abstractions/fontconfig-cache-read>
include <abstractions/nameservice-strict> include <abstractions/nameservice-strict>
include <abstractions/python> include <abstractions/python>
include <abstractions/sqlite>
include <abstractions/ssl_certs> include <abstractions/ssl_certs>
include <abstractions/user-download-strict> include <abstractions/user-download-strict>
@ -47,9 +48,6 @@ profile gpodder @{exec_path} {
owner @{HOME}/gPodder/ rw, owner @{HOME}/gPodder/ rw,
owner @{HOME}/gPodder/** rwk, owner @{HOME}/gPodder/** rwk,
owner @{tmp}/etilqs_@{sqlhex} rw,
owner /var/tmp/etilqs_@{sqlhex} rw,
owner @{PROC}/@{pid}/fd/ r, owner @{PROC}/@{pid}/fd/ r,
owner @{PROC}/@{pid}/mounts r, owner @{PROC}/@{pid}/mounts r,
owner @{PROC}/@{pid}/mountinfo r, owner @{PROC}/@{pid}/mountinfo r,

View file

@ -17,6 +17,7 @@ profile protonmail-bridge-core @{exec_path} flags=(attach_disconnected) {
include <abstractions/consoles> include <abstractions/consoles>
include <abstractions/nameservice-strict> include <abstractions/nameservice-strict>
include <abstractions/ssl_certs> include <abstractions/ssl_certs>
include <abstractions/sqlite>
network inet dgram, network inet dgram,
network inet6 dgram, network inet6 dgram,
@ -43,8 +44,6 @@ profile protonmail-bridge-core @{exec_path} flags=(attach_disconnected) {
owner "@{user_config_dirs}/autostart/Proton Mail Bridge.desktop" rw, owner "@{user_config_dirs}/autostart/Proton Mail Bridge.desktop" rw,
owner @{tmp}/bridge@{int} rw, owner @{tmp}/bridge@{int} rw,
owner @{tmp}/etilqs_@{sqlhex} rw,
owner /var/tmp/etilqs_@{sqlhex} rw,
@{PROC}/ r, @{PROC}/ r,
@{PROC}/1/cgroup r, @{PROC}/1/cgroup r,

View file

@ -18,6 +18,7 @@ profile psi @{exec_path} {
include <abstractions/nameservice-strict> include <abstractions/nameservice-strict>
include <abstractions/qt5-compose-cache-write> include <abstractions/qt5-compose-cache-write>
include <abstractions/qt5-settings-write> include <abstractions/qt5-settings-write>
include <abstractions/sqlite>
include <abstractions/ssl_certs> include <abstractions/ssl_certs>
include <abstractions/thumbnails-cache-read> include <abstractions/thumbnails-cache-read>
include <abstractions/user-download-strict> include <abstractions/user-download-strict>
@ -54,7 +55,6 @@ profile psi @{exec_path} {
owner @{user_share_dirs}/psi/** rwk, owner @{user_share_dirs}/psi/** rwk,
owner @{tmp}/#@{int} rw, owner @{tmp}/#@{int} rw,
owner @{tmp}/etilqs_@{sqlhex} rw,
owner @{tmp}/Psi.* rwl -> /tmp/#@{int}, owner @{tmp}/Psi.* rwl -> /tmp/#@{int},
@{att}/@{run}/systemd/inhibit/@{int}.ref rw, @{att}/@{run}/systemd/inhibit/@{int}.ref rw,

View file

@ -18,6 +18,7 @@ profile psi-plus @{exec_path} {
include <abstractions/nameservice-strict> include <abstractions/nameservice-strict>
include <abstractions/qt5-compose-cache-write> include <abstractions/qt5-compose-cache-write>
include <abstractions/qt5-settings-write> include <abstractions/qt5-settings-write>
include <abstractions/sqlite>
include <abstractions/ssl_certs> include <abstractions/ssl_certs>
include <abstractions/thumbnails-cache-read> include <abstractions/thumbnails-cache-read>
include <abstractions/user-download-strict> include <abstractions/user-download-strict>
@ -54,7 +55,6 @@ profile psi-plus @{exec_path} {
owner @{user_share_dirs}/psi+/** rwk, owner @{user_share_dirs}/psi+/** rwk,
owner @{tmp}/#@{int} rw, owner @{tmp}/#@{int} rw,
owner @{tmp}/etilqs_@{sqlhex} rw,
owner @{tmp}/Psi+.* rwl -> /tmp/#@{int}, owner @{tmp}/Psi+.* rwl -> /tmp/#@{int},
@{att}/@{run}/systemd/inhibit/@{int}.ref rw, @{att}/@{run}/systemd/inhibit/@{int}.ref rw,

View file

@ -18,6 +18,7 @@ profile quiterss @{exec_path} {
include <abstractions/nameservice-strict> include <abstractions/nameservice-strict>
include <abstractions/qt5-compose-cache-write> include <abstractions/qt5-compose-cache-write>
include <abstractions/qt5-settings-write> include <abstractions/qt5-settings-write>
include <abstractions/sqlite>
include <abstractions/ssl_certs> include <abstractions/ssl_certs>
include <abstractions/user-download-strict> include <abstractions/user-download-strict>
@ -47,8 +48,6 @@ profile quiterss @{exec_path} {
owner @{tmp}/qtsingleapp-quiter-@{int}-@{int} rw, owner @{tmp}/qtsingleapp-quiter-@{int}-@{int} rw,
owner @{tmp}/qtsingleapp-quiter-@{int}-@{int}-lockfile rwk, owner @{tmp}/qtsingleapp-quiter-@{int}-@{int}-lockfile rwk,
owner @{tmp}/etilqs_@{sqlhex} rw,
owner /var/tmp/etilqs_@{sqlhex} rw,
@{PROC}/sys/kernel/random/boot_id r, @{PROC}/sys/kernel/random/boot_id r,
owner @{PROC}/@{pid}/cmdline r, owner @{PROC}/@{pid}/cmdline r,

View file

@ -21,6 +21,7 @@ profile strawberry @{exec_path} flags=(attach_disconnected,mediate_deleted) {
include <abstractions/nameservice-strict> include <abstractions/nameservice-strict>
include <abstractions/qt5-compose-cache-write> include <abstractions/qt5-compose-cache-write>
include <abstractions/qt5-settings-write> include <abstractions/qt5-settings-write>
include <abstractions/sqlite>
include <abstractions/ssl_certs> include <abstractions/ssl_certs>
include <abstractions/user-download-strict> include <abstractions/user-download-strict>
@ -68,7 +69,6 @@ profile strawberry @{exec_path} flags=(attach_disconnected,mediate_deleted) {
owner @{tmp}/.*/s rw, owner @{tmp}/.*/s rw,
owner @{tmp}/*= w, owner @{tmp}/*= w,
owner @{tmp}/#@{int} rw, owner @{tmp}/#@{int} rw,
owner @{tmp}/etilqs_@{sqlhex} rw,
owner @{tmp}/kdsingleapp-*-strawberry w, owner @{tmp}/kdsingleapp-*-strawberry w,
owner @{tmp}/kdsingleapp-*-strawberry.lock rwk, owner @{tmp}/kdsingleapp-*-strawberry.lock rwk,
owner @{tmp}/qipc_{systemsem,sharedmemory}_*[a-f0-9]* rw, owner @{tmp}/qipc_{systemsem,sharedmemory}_*[a-f0-9]* rw,

View file

@ -12,6 +12,7 @@ profile syncthing @{exec_path} {
include <abstractions/base> include <abstractions/base>
include <abstractions/consoles> include <abstractions/consoles>
include <abstractions/nameservice-strict> include <abstractions/nameservice-strict>
include <abstractions/sqlite>
include <abstractions/ssl_certs> include <abstractions/ssl_certs>
network inet dgram, network inet dgram,
@ -35,9 +36,6 @@ profile syncthing @{exec_path} {
/home/ r, /home/ r,
@{user_sync_dirs}/{,**} rw, @{user_sync_dirs}/{,**} rw,
owner /var/tmp/etilqs_@{sqlhex} rw,
owner @{tmp}/etilqs_@{sqlhex} rw,
@{PROC}/@{pids}/net/route r, @{PROC}/@{pids}/net/route r,
@{PROC}/bus/pci/devices r, @{PROC}/bus/pci/devices r,
@{PROC}/modules r, @{PROC}/modules r,

View file

@ -19,6 +19,7 @@ profile wechat-appimage @{exec_path} flags=(attach_disconnected) {
include <abstractions/common/electron> include <abstractions/common/electron>
include <abstractions/consoles> include <abstractions/consoles>
include <abstractions/path> include <abstractions/path>
include <abstractions/sqlite>
network netlink raw, network netlink raw,
network netlink dgram, network netlink dgram,
@ -59,9 +60,6 @@ profile wechat-appimage @{exec_path} flags=(attach_disconnected) {
owner @{user_documents_dirs}/xwechat_files/{,**} rwk, owner @{user_documents_dirs}/xwechat_files/{,**} rwk,
owner @{tmp}/etilqs_@{sqlhex} rw,
owner /var/tmp/etilqs_@{sqlhex} rw,
/dev/fuse rw, /dev/fuse rw,
/dev/tty rw, /dev/tty rw,

View file

@ -56,9 +56,6 @@
# System Internal # System Internal
# --------------- # ---------------
# SQlite temporary files (hexadecimal from 12 to 16 characters)
@{sqlhex}=@{hex12} @{hex12}@{h} @{hex12}@{hex2} @{hex15} @{hex16}
# Shortcut for PCI device # Shortcut for PCI device
@{pci_id}=@{hex}:@{hex2}:@{hex2}.@{h} @{pci_id}=@{hex}:@{hex2}:@{hex2}.@{h}
@{pci_bus}=pci@{hex4}:@{hex2} @{pci_bus}=pci@{hex4}:@{hex2}