On Fri, Aug 16, 2019 at 11:33:57AM +0000, Jordan Glover wrote: > On Friday, August 16, 2019 9:59 AM, Thomas Gleixner <tglx@xxxxxxxxxxxxx> wrote: > > > On Fri, 16 Aug 2019, Jordan Glover wrote: > > > > > "systemd --user" service? Trying to do so will fail with: > > > "Failed to apply ambient capabilities (before UID change): Operation not permitted" > > > I think it's crucial to clear that point to avoid confusion in this discussion > > > where people are talking about different things. > > > On the other hand running "systemd --system" service with: > > > User=nobody > > > AmbientCapabilities=CAP_NET_ADMIN > > > is perfectly legit and clears some security concerns as only privileged user > > > can start such service. > > > > While we are at it, can we please stop looking at this from a systemd only > > perspective. There is a world outside of systemd. > > > > Thanks, > > > > tglx > > If you define: > > "systemd --user" == unprivileged process started by unprivileged user > "systemd --system" == process started by privileged user but run as another > user which keeps some of parent user privileges and drops others > > you can get rid of "systemd" from the equation. > > "systemd --user" was the example provided by Alexei when asked about the usecase > but his description didn't match what it does so it's not obvious what the real > usecase is. I'm sure there can be many more examples and systemd isn't important > here in particular beside to understand this specific example. It's both of the above when 'systemd' is not taken literally. To earlier Thomas's point: the use case is not only about systemd. There are other containers management systems. I've used 'systemd-like' terminology as an attempt to explain that such daemons are trusted signed binaries that can be run as pid=1. Sometimes it's the later: "process started by privileged user but run as another user which keeps some of parent user privileges and drops others". Sometimes capability delegation to another container management daemon is too cumbersome, so it's easier to use suid bit on that other daemon. So it will become like the former: "sort-of unprivileged process started by unprivileged user." where daemon has suid and drops most of the capabilities as it starts. Let's not focus on the model being good or bad security wise. The point that those are the use cases that folks are thinking about. That secondary daemon can be full root just fine. All outer and inner daemons can be root. These daemons need to drop privileges to make the system safer == less prone to corruption due to bugs in themselves. Not necessary security bugs.