# /etc/apparmor.d/pawletprofiled # AppArmor MAC profile for the pawletprofiled daemon. # Installed by the pawletprofiled Debian package. #include /usr/sbin/pawletprofiled { #include #include # D-Bus (system bus access) #include # Own binary /usr/sbin/pawletprofiled mr, # ── Profile store ───────────────────────────────────────────────────────── /var/lib/pawletprofiled/ rw, /var/lib/pawletprofiled/** rw, # ── Config directories (profile drop-ins written here) ─────────────────── /etc/pawletprofiled/ rw, /etc/pawletprofiled/** rw, /etc/NetworkManager/conf.d/ rw, /etc/NetworkManager/conf.d/** rw, /etc/NetworkManager/system-connections/ rw, /etc/NetworkManager/system-connections/** rw, /etc/apt/apt.conf.d/ rw, /etc/apt/apt.conf.d/** rw, /etc/cloud/cloud.cfg.d/ rw, /etc/cloud/cloud.cfg.d/** rw, /etc/systemd/timesyncd.conf.d/ rw, /etc/systemd/timesyncd.conf.d/** rw, /etc/systemd/resolved.conf.d/ rw, /etc/systemd/resolved.conf.d/** rw, /etc/security/pwquality.conf.d/ rw, /etc/security/pwquality.conf.d/** rw, /etc/security/faillock.conf.d/ rw, /etc/security/faillock.conf.d/** rw, /etc/nftables.d/ rw, /etc/nftables.d/** rw, /etc/ldap/ rw, /etc/ldap/** rw, /etc/nslcd.conf rw, /etc/profile.d/ rw, /etc/profile.d/** rw, /etc/dconf/db/local.d/ rw, /etc/dconf/db/local.d/** rw, /etc/ssl/private/pawletos/ rw, /etc/ssl/private/pawletos/** rw, /usr/local/share/ca-certificates/pawletos/ rw, /usr/local/share/ca-certificates/pawletos/** rw, /var/lib/gnome-initial-setup/ rw, /var/lib/gnome-initial-setup/** rw, # ── Schema (read only — owned by pawletprofiled-config-schema) ──────────── /usr/share/pawletprofiled/schema/ r, /usr/share/pawletprofiled/schema/* r, # ── TLS / certificate paths (explicit — no abstractions/openssl on Debian) ─ /etc/ssl/certs/ r, /etc/ssl/certs/** r, /etc/ssl/openssl.cnf r, /usr/lib/ssl/openssl.cnf r, /usr/share/ca-certificates/ r, /usr/share/ca-certificates/** r, /etc/pawletprofiled/profile_ca.pem r, # ── D-Bus service registration ──────────────────────────────────────────── dbus (send, receive, bind) bus=system name="os.pawlet.ProfiledService", dbus (send) bus=system interface="org.freedesktop.DBus" member="RequestName", dbus (send) bus=system interface="org.freedesktop.NetworkManager", dbus (receive) bus=system interface="org.freedesktop.NetworkManager", # ── Executables called by payload handlers ──────────────────────────────── /usr/sbin/update-ca-certificates Px, /usr/bin/dconf Px, /usr/bin/gsettings Px, /sbin/nft Px, /usr/sbin/nslcd Px, /usr/bin/pk12util Px, /bin/systemctl Px, /usr/bin/cloud-init Px, # nmcli is no longer used (WiFi/Ethernet use keyfiles directly), # but keep read access for diagnostics /usr/bin/nmcli ix, # ── Network (ZTE HTTPS lookups via libcurl) ─────────────────────────────── network inet stream, network inet6 stream, network inet dgram, # DNS resolution # ── /proc and system info ───────────────────────────────────────────────── @{PROC}/@{pid}/status r, @{PROC}/sys/kernel/hostname r, /sys/class/dmi/id/ r, /sys/class/dmi/id/* r, /sys/class/net/ r, /sys/class/net/** r, /sys/firmware/efi/ r, /sys/firmware/efi/** r, /sys/class/tpm/ r, /etc/machine-id r, /var/lib/dbus/machine-id r, # ── Logging ─────────────────────────────────────────────────────────────── /run/systemd/journal/socket w, /run/systemd/notify w, /dev/log w, # ── Lock file (ZTE enrollment serialisation) ────────────────────────────── /run/pawletprofiled/ rw, /run/pawletprofiled/** rw, # ── Deny sensitive paths ────────────────────────────────────────────────── deny /home/** rw, deny /root/** rw, deny /boot/** rw, deny network raw, deny network packet, }