gnoack
The "Unix Power Tools" book is an excellent source for Unix and shell usage tricks
If your calculated policy is a function of the entire path, you'd normally need to key the calculated policy by the entire path and its relevant properties (underlying inodes) as well, no?
There are path-based LSMs in the Linux kernel that do not employ such caching. If you found a solution for this which also works in the corner cases and results in speed-up in real life scenarios, I'd be interested :)
They were trained to do what you ask, but unlike with humans, you need to ask for the refactoring yourself. -- They won't necessarily come up with it on their own.
(They also tend to not be around for long enough to live through the consequences of their tech debt actions.)
It is also a testament to solid engineering and attention to good security practices in general. These still work, also against fancy new AI attackers.
When sophisticated attacks become cheaper to run, maybe it will (finally) be cheaper to do more solid engineering instead of doing it quick and dirty and ending up in indefinite bug-squashing mode.
You can run "netstat --listening --unix" to list the UNIX domain servers on your system, to get an impression.
Varlink is based on much more conventional UNIX technology than Dbus, which is decades old: You connect to a named UNIX socket through its socket file in the filesystem (man page: unix(7)).
This is an old mechanism and it is known to work well. It does not require a broker service, it works right at system startup, and it does not require a working user database for permission checks (which would be a circular dependency for systemd in some configurations). If at all, I am surprised that systemd didn't use that earlier.
The main thing that Varlink standardizes on top of that is a JSON-based serialization format for a series of request/response pairs. But that seems like a lightweight addition.
It also does not require kernel support to work, the kernel support is already there. He mentioned in the talk that he'd like to be able to "tag" UNIX sockets that speak varlink as such, with kernel support. But that is not a prerequisite to use this at all. The service discovery -- and he said that in the talk as well -- is simply done by listing socket files in the file system, and by having a convention for where they are created.
The problem was also recently discussed at https://lssna2025.sched.com/event/1zam9/handling-new-syscall...
We do have libraries for Go and Rust, and the invocation is much more terse there, e.g.
err := landlock.V5.BestEffort().RestrictPaths(
landlock.RODirs("/usr", "/bin"),
landlock.RWDirs("/tmp"),
)
FWIW, the additional ceremony in Linux is because Linux guarantees full ABI backwards compatibility (whereas in OpenBSD policy, compiled programs may need recompilation occasionally).Similarly terse APIs as for Go and Rust are possible in C as well though, as wrapper libraries.
For full disclosure, I am the author of the go-landlock library and contributor to Landlock in the kernel.
Regarding no one having a lock on the term "delegation", I think this is spot on. Yes, someone might have used the term differently before GoF, but that does not mean that GoF was wrong. It just meant something else in their context.
(Btw, congratulations, your comment is the first one so far in this comment thread that actually discusses the linked article and not just the GoF book itself.)
A rough description of upcoming network restriction features in Landlock and how they map to the BSD socket API is in the talk at https://youtu.be/K2onopkMhuM?start=2025 starting around 33:45
I really hope we can get back to these features soon :) I think these would be very useful.
Awesome! I'm happy to hear that you and others are interested in the configuration language. We should probably coordinate that on the Landlock mailing list when the time comes, so that we don't duplicate that work. We are open to outside contributions :)
See the example at the top of the Readme at https://github.com/landlock-lsm/go-landlock
(Full disclosure, I am the author of that library)
FWIW, I do hope that we can motivate people to use Landlock in the same way as people use pledge on OpenBSD, as a lightweight self-sandboxing mechanism that requires fewer architectural changes to your program and results in more constrained sandboxes than Linux namespaces and other mechanisms do.
It is a library, as already linked in the other comment: https://github.com/landlock-lsm/go-landlock
The landrun tool is built on the same library. We also provide an official library for Rust, and obviously you can do it from C as well.
I also collected some libraries for other languages at https://wiki.gnoack.org/SoftwareUsingLandlock (but I can not vouch for their quality in detail)
Namespaces can also be used for sandboxing, but they have a series of problems. Most importantly, they require more substantial changes to your program that wants to sandbox itself, and the program has to jump through a series of hoops to get everything into the right state. It is possible, but the resulting program environment is in the end more unusual and the mechanisms for enabling unprivileged namespaces are making it difficult to use it for smaller use cases. (It involves re-execution of the program that wants to sandbox itself, whereas with Landlock, a small program can just install a Landlock policy during an early startup phase and continue with that.)
Controlling the rules through a separate process is not currently possible, but it was proposed earlier this month on the kernel mailing lists:
https://wiki.gnoack.org/UkuleleWeb
It takes very little resources on my Raspberry Pi and is built to be extensible and safe through its transparent way of storing wiki pages as markdown files.
Man Pages Maintenance Suspended
Anyone who does system administration on Linux, who uses the command line, or who programs in C is relying on this documentation.
Also, it is not the Debian package maintainer stepping down, but the project maintainer.
Alan Kay has long wanted to "get rid of data" in programming, as described at http://userpage.fu-berlin.de/~ram/pub/pub_jf47ht81Ht/doc_kay...
The entire discussion that this Alan Kay quote is from has always been about the prominence of "data" as a central concept in programming, not about other aspects like privacy or "big data".
grep '^[behilos]*$' /usr/dict/web2https://www.unix-ag.uni-kl.de/~guenther/unix-tools-for-real-...