diff --git a/images/fedora-intune/defender.yaml b/images/fedora-intune/defender.yaml index 9c7d37b..73561d3 100644 --- a/images/fedora-intune/defender.yaml +++ b/images/fedora-intune/defender.yaml @@ -34,7 +34,10 @@ add-files: # reference: https://learn.microsoft.com/defender-endpoint/linux-preferences # Not set here: network protection (Insiders channels only) and tamper # protection (audit-only preview on Linux). - - ["mdatp_managed.json", "/etc/opt/microsoft/mdatp/managed/mdatp_managed.json"] + - ["mdatp_managed.json", "/usr/share/mdatp-managed/mdatp_managed.json"] + # Installed into /etc/opt/microsoft/mdatp/managed/ whenever Defender starts; + # see the drop-in. + - ["mdatp-managed-config.conf", "/usr/lib/systemd/system/mdatp.service.d/20-managed-config.conf"] postprocess: - | @@ -52,6 +55,6 @@ postprocess: done semodule -n -i "${pp}" # Fail the build on a typo rather than ship a config Defender can't read. - python3 -m json.tool /etc/opt/microsoft/mdatp/managed/mdatp_managed.json > /dev/null + python3 -m json.tool /usr/share/mdatp-managed/mdatp_managed.json > /dev/null rpm -q --qf '%{POSTIN}' mdatp > /usr/libexec/mdatp-postinst chmod 0755 /usr/libexec/mdatp-firstboot /usr/libexec/mdatp-postinst diff --git a/images/fedora-intune/files/himmelblau-os-release b/images/fedora-intune/files/himmelblau-os-release index 06d015b..ae13aaf 100644 --- a/images/fedora-intune/files/himmelblau-os-release +++ b/images/fedora-intune/files/himmelblau-os-release @@ -5,16 +5,23 @@ # "44". Himmelblau reports VERSION_ID as the device's OS version and has no # setting for it. The rest of the system keeps the stock VERSION_ID, which # toolbox, flatpak and dnf expect to be the plain release. +# +# PRETTY_NAME becomes just NAME: libhimmelblau reports "PRETTY_NAME VERSION_ID" +# as the OS version string, and Fedora's PRETTY_NAME already contains the +# version ("Fedora Linux 44.20261020.0 (Forty Four) 44.20261020.0"). Nothing +# else in Himmelblau reads PRETTY_NAME. set -euo pipefail SRC=/usr/lib/os-release DEST=/run/himmelblau-os-release version="$(. "${SRC}" && echo "${OSTREE_VERSION:-${IMAGE_VERSION:-}}")" +name="$(. "${SRC}" && echo "${NAME:-Linux}")" tmp="$(mktemp "${DEST}.XXXXXX")" if [[ -n "${version}" ]]; then - sed "s/^VERSION_ID=.*/VERSION_ID=${version}/" "${SRC}" > "${tmp}" + sed -e "s/^VERSION_ID=.*/VERSION_ID=${version}/" \ + -e "s/^PRETTY_NAME=.*/PRETTY_NAME=\"${name}\"/" "${SRC}" > "${tmp}" else # No image version (not an ostree/bootc deployment): pass it through as-is. cat "${SRC}" > "${tmp}" diff --git a/images/fedora-intune/files/mdatp-managed-config.conf b/images/fedora-intune/files/mdatp-managed-config.conf new file mode 100644 index 0000000..48364b7 --- /dev/null +++ b/images/fedora-intune/files/mdatp-managed-config.conf @@ -0,0 +1,7 @@ +# Install the image's enforced Defender settings each time Defender starts. +# The image can't ship them in /etc directly: mdatp-firstboot creates +# /etc/opt/microsoft/mdatp on the device, so on updates that directory counts +# as local and ostree's /etc merge never adds new files under it. Copying on +# every start also picks up changes from newer images and undoes local edits. +[Service] +ExecStartPre=+/usr/bin/install -D -Z -m 0644 /usr/share/mdatp-managed/mdatp_managed.json /etc/opt/microsoft/mdatp/managed/mdatp_managed.json