Show HN: Bor – Open-source policy management for Linux desktops
Posted by eniac111 1 day ago
Hi HN! I've been working on Bor, an open-source system for centralized Linux desktop management.
Bor consists of a lightweight Go agent and a central server. Policies are streamed to clients over mTLS/gRPC in real time—no polling—and currently support Firefox, Chrome, KDE, dconf, polkit and package management, with more coming.
Version 0.8 introduces several new policy types - Thunderbird, Microsoft Edge for Business and FirewallD zones, along with a number of improvements and fixes.
I'd love feedback on the architecture, policy model, and whether this is something you'd consider for managing Linux workstations.
Comments
Comment by V__ 1 day ago
I would love to see configurations for Linux Mint's Cinnamon. Is there a way to execute custom scripts? How does the user mapping work exactly? Could I create a user in Authentik with a laptop-permission and this would map to a Linux user account?
Nonetheless, this is really great work so far, and if you keep it as nice and tidy as it currently looks, then you might make a nice niche for yourself. I can't wait to try it out.
Comment by solarengineer 1 day ago
Comment by avhception 7 hours ago
Comment by eniac111 1 day ago
I have never tested Cinnamon, but it should work in theory, because it stores most of it's settings in dconf.
Custom scripts: deliberately not, so far. Once a management agent runs arbitrary scripts as root, it stops being a policy system and becomes remote-code-execution-as-a-service — the security review, the audit story, and the "what exactly is enforced on this machine?" It may be implemented in the future, but with a ENV variable/config property from the application configuration. The same goes for configuration management systems like Ansible.
Thank you for the interest! I'm interested in developing a community around the software.
Comment by ranger_danger 21 hours ago
Comment by stasiu 1 day ago
Comment by eniac111 1 day ago
Comment by limagnolia 16 hours ago
Comment by d3Xt3r 1 day ago
Comment by figmert 1 day ago
Comment by eniac111 1 day ago
Comment by manbash 1 day ago
Regarding the docs, the diagrams should really be replaced with something more familiar and readable such as Mermaid (currently it looks like a mixture of ad-hoc ASCII charts).
Comment by eniac111 23 hours ago
Policies are delivered over a persistent gRPC stream, secured with mTLS, where each node gets it's own cert from Bor's built-in CA at enrollment - so there's no SSH key sprawl and no credentials on the server that could log into machines. Since agents connect outbound to the server, it works through NAT and firewalls without opening any inbound ports on desktops, and policy changes propagate in seconds over the already-open stream. SHH-push would have meant maintaining an inventory of searchable hosts and a server that can shell into the whole fleet - a much bigger attach surface for less capability.
Comment by ktm5j 23 hours ago
Comment by jimmcslim 1 day ago
Comment by ekTHEN 3 hours ago
So any modern distribution with Gnome as desktop should allow this (e.g. Fedora)
I found more details and screenshots on this blog: https://blogs.gnome.org/ignapk/
Comment by eniac111 1 day ago
It could easily block porn, enforcing DNS over HTTPS in the web browsers, using providers with adult content protection.
Comment by sandreas 21 hours ago
1: https://ostechnix.com/system76-cosmic-sync-linux-desktop-set...
Comment by eniac111 15 hours ago
Comment by sandreas 4 hours ago
Thanks for taking the time and for making this!
Comment by eniac111 2 hours ago
Comment by evanjrowley 1 day ago
Comment by teddzfr 1 day ago
Also curious: with LDAP-only auth, how do non-domain single-user laptops fit in? I manage a few personal machines that I'd love to centralize but they aren't LDAP-joined — is there a lightweight path, or is the temp-token enrollment strictly for domain boxes?
Comment by eniac111 1 day ago
About the files, most of the bor-managed files are not defaults, coming from the system packages. If a given file is overridden by a package, the Bor agent will immediately rollback the managed version.
Also, there is a priority value on each policy, if several policies have the same property.
Comment by mangudai 22 hours ago
Comment by bogomil 1 day ago