The problem
A shared Linux laptop needed child-safe DNS and application controls while preserving normal administration and local Minecraft connectivity.
What I did
I implemented policy by user identity and traffic destination rather than applying a blanket lock-down.
- A restricted child account is targeted by user identity; the public page omits the real account name and UID
- Per-user nftables rules allow the home LAN and Minecraft Bedrock ports while restricting other traffic
- DNS for the child account is directed to AdGuard Home
- Tailscale remains system-wide while global DNS replacement is disabled
- GNOME Software is blocked for the child using an ACL that can be cleanly removed later
Implementation notes
Representative commands from the way I diagnose and maintain this project. Public examples use placeholders instead of credentials or sensitive addresses.
Reversible Linux policy controls
# Representative policy example; real account identifiers are intentionally omitted
sudo setfacl -m 'u:restricted_user:---' /usr/bin/gnome-software
# Remove the ACL when access should be restored
sudo setfacl -x 'u:restricted_user' /usr/bin/gnome-software
# Validate the per-user nftables policy
sudo nft -c -f /etc/restricted_user-minecraft.nft
sudo nft list table inet restricted_user_minecraft
sudo systemctl status restricted_user-minecraft-filter.service --no-pager
# Keep Tailscale routes while leaving system DNS under local control
sudo tailscale set --accept-routes=true --accept-dns=falseResult
The child account has meaningful controls without breaking the administrator account or local family services.
