Trust
See each lock yourself
Keep locked You do not have to believe ujust unwoke-test. These are the same proofs, one at a time, with commands you type. They only read. They do not unlock anything. Stock ujust audit-secureblue does not cover this list.
One-shot script first: Check health. Tickets: Shipped first. Pitch vs stock: Prove it on the disk.
How to read a result. You should see the “healthy” output. If a stamp file under /etc/unwoke/ exists, you turned that default off — that is LOOSE, not a broken image. Live-ISO-only checks (#1185, #2432) skip on an installed ostree. That is expected.
Jump to a check
- Flavor + no store
- #391 /boot 700
- #697 RAM noexec
- #887 Flatpak buses
- #1185 live NTS
- #1295 CET
- #1569 DHCP
- #1606 CA trim
- #1885 extra Flatpak folders
- #2156 Flatpak record
- #2354 NFS/CIFS clients
- #2432 Anaconda encrypt
- #2508 Flatpak browsers
- #2526 Argon2id 2 GiB
- DevTools locked
- USBGuard first-boot prompt
- House defaults (BT, Flathub, brew…)
Flavor and no store
-
Which overlay is this?
cat /usr/share/unwoke/flavor ls /usr/share/unwoke/SHIPPED-FIRST.txt /usr/share/unwoke/NOTICE /usr/share/unwoke/LICENSEHealthy:
trivalent,brave-origin, orbrowserless. The three files exist. Stock has none of these paths. -
Stores really gone
rpm -q gnome-software plasma-discover bazaarHealthy: each line says “is not installed.” Stock ships Bazaar.
#391 — /boot is 700
Kernel image dir not world-readable. Stock still asks for this. Revert: ujust set-boot-perm off.
stat -c '%a %n' /boot /usr/src /usr/lib/modules
ls /etc/unwoke/allow-boot-open 2>/dev/null || echo 'lock wanted (no stamp)'
Healthy: 700 on those directories. /boot is runtime; /usr/src and modules are 700 in the image. Stamp only re-opens /boot.
#697 — RAM disks cannot exec
Payloads in /dev/shm, /tmp, and /var/tmp should not run. Stock asked only for the RAM disks; we also bind-mount /var/tmp noexec so a payload cannot dodge into persistent temp. Revert: ujust set-ramdisk-exec on.
findmnt -no OPTIONS /dev/shm
findmnt -no OPTIONS /tmp
findmnt -no OPTIONS /var/tmp
ls /etc/unwoke/allow-ramdisk-exec 2>/dev/null || echo 'lock wanted'
Healthy: all three option lists include noexec. If they do not after first boot and you did not stamp allow-ramdisk-exec, that is a fail (fail-closed).
#887 — Flatpak session bus
Stock audit does not warn. Overlay lockdown should not grant session-bus, system-bus, or org.freedesktop.Flatpak.
flatpak override --show
flatpak override --user --show
Healthy: you see !session-bus / !system-bus (or those names absent as grants). A bare session-bus without ! is a fail. Stamp /etc/unwoke/flatpak-lockdown.off means you turned lockdown off.
#1185 — chrony NTS
Live USB and installed OS. Independent of ujust dns-selector. Revert: ujust set-nts off.
cat /etc/chrony.d/50-unwoke-nts.conf
ls /etc/unwoke/allow-clear-ntp 2>/dev/null || echo 'NTS wanted'
Healthy: server time.cloudflare.com iburst nts and server nts.ntp.se iburst nts. Missing after first boot is a fail unless you stamped allow-clear-ntp.
#1295 — SHSTK + IBT
Intel CET glibc tunables. Revert: ujust set-cet off.
cat /etc/systemd/system.conf.d/90-unwoke-cet.conf
cat /usr/share/unwoke/cet-system.conf
ls /etc/unwoke/cet.off 2>/dev/null || echo 'CET wanted on'
Healthy: GLIBC_TUNABLES contains x86_shstk=on and x86_ibt=on.
#1569 — DHCP anonymity
No hostname, IAID=mac, send-release. Revert: ujust set-dhcp-hostname on.
cat /etc/NetworkManager/conf.d/90-unwoke-dhcp.conf
cat /usr/share/unwoke/nm-privacy-dhcp.conf
Healthy: dhcp-send-hostname=false, dhcp-iaid=mac, dhcp-send-release=true. If only the file under /usr/share exists, apply-boot has not copied it to /etc yet — reboot.
#1606 — fewer trusted CAs
Fedora roots that are not Mozilla website-trusted. Revert: ujust set-extra-cas on.
ls /etc/pki/ca-trust/source/blocklist/unwoke-*.pem
ls /usr/share/unwoke/ca-blocklist 2>/dev/null | head
ls /etc/unwoke/allow-extra-cas 2>/dev/null || echo 'trim wanted'
Healthy: one or more unwoke-*.pem in the blocklist after first boot. Empty with no allow-extra-cas stamp is a fail.
#1885 — extra Flatpak folders
xdg + host-root cuts stock’s lockdown command does not force. Revert: ujust set-flatpak-lockdown off.
flatpak override --show | grep -E 'host-root|xdg-download|xdg-documents'
Healthy: those names appear as denied filesystems (often with !). Empty output right after first boot: run ujust set-flatpak-lockdown on only if you already turned it off; otherwise reboot and look again.
#2156 — Flatpak cannot record
Pulse + PipeWire capture blocked for Flatpaks. Native speakers stay. Revert: ujust set-flatpak-record off.
flatpak override --show | grep -Ei 'pulseaudio|pipewire'
ls /etc/unwoke/flatpak-record.off 2>/dev/null || echo 'record-block wanted'
Healthy: Pulse socket / PipeWire path denied, no stamp file.
#2354 — NFS/CIFS clients
Stock only masks the NFS server. We also blacklist client modules. Revert: ujust set-network-fs on.
cat /etc/modprobe.d/unwoke-network-fs.conf
cat /usr/share/unwoke/modprobe-network-fs.conf
lsmod | grep -E 'nfs|cifs' || echo 'modules not loaded (good)'
Healthy: blacklist nfs and blacklist cifs in the conf. lsmod should not show them unless you loosened.
#2432 — Encrypt on in Anaconda
Live USB only. After install this file is gone — skip.
grep -R 'autopart --encrypted' /etc/anaconda /usr/share/anaconda 2>/dev/null | head
Healthy on the stick: a line with autopart --encrypted. You can still untick Encrypt in the GUI. Stock starts with Encrypt off.
#2508 — Flatpak web browsers
Stock audit does not list them. Browserless should have none.
flatpak list --app --columns=application
Healthy: no Firefox/Chrome/Brave/Edge/Chromium/Tor/LibreWolf IDs. If one is there on a -browserless image, that is a fail.
#2526 — LUKS Argon2id 2 GiB
Default for later LUKS format on the OS (and the live ISO). Weaker only if you format LUKS yourself without this conf.
cat /etc/cryptsetup.conf
cat /usr/etc/cryptsetup.conf
Healthy: pbkdf = argon2id and pbkdf-memory = 2097152 (KiB = 2 GiB).
DevTools locked
Default locked. Revert: ujust set-brave-devtools allow.
ls /etc/brave-origin/policies/managed/60-unwoke-devtools.json /etc/trivalent/policies/managed/60-unwoke-devtools.json 2>/dev/null
ls /etc/unwoke/brave-devtools.off 2>/dev/null || echo 'DevTools lock wanted'
Healthy: the JSON exists on Origin or Trivalent. Stamp means you allowed DevTools. Browserless: skip.
USBGuard first-boot prompt
Asked in Unwoke setup after login, default No. Never silent-enable. Does not block GDM on tty1.
ls /etc/unwoke/usbguard-prompt.done 2>/dev/null || echo 'prompt not run yet'
wc -l /etc/usbguard/rules.conf 2>/dev/null || echo 'no rules yet'
Healthy: after first boot the done stamp exists. Non-empty rules only if you said Yes. Later: ujust setup-usbguard.
House defaults (not stock tickets)
Same idea: look at the stamp. No stamp = lock wanted.
# Bluetooth (Wi-Fi stays)
systemctl is-enabled bluetooth 2>/dev/null || echo 'masked/disabled (good)'
ls /etc/unwoke/allow-bluetooth 2>/dev/null || echo 'BT lock wanted'
# Flathub
flatpak remotes
cat /etc/unwoke/flathub 2>/dev/null || echo 'no stamp = Flathub off'
# Homebrew / toolbox / camera
ls /etc/unwoke/allow-brew /etc/unwoke/allow-toolbox /etc/unwoke/allow-camera-mic 2>/dev/null || echo 'those three locks wanted'
# Countme census
systemctl is-enabled rpm-ostree-countme.timer 2>/dev/null || echo 'countme not enabled (good)'
ls /etc/unwoke/allow-countme 2>/dev/null || echo 'countme lock wanted'
Healthy: remotes do not include Flathub until you chose it; Bluetooth not enabled; those allow-* files absent; countme timer not enabled.
If a check fails and you did not loosen it: do not “fix” it by turning the lock off. File a GitHub issue. Canary hits and a new keys/secureblue.pub stay manual on our side.