• Dracocide@lemm.ee
      link
      fedilink
      Akan
      arrow-up
      39
      arrow-down
      3
      ·
      7 months ago

      I never understood the hate, tbh. A lot of users don’t even care if Sysd is used, as long as it works. So… Since the majority of distros use it… I think it works enough.

      • Grangle1@lemm.ee
        link
        fedilink
        arrow-up
        23
        arrow-down
        2
        ·
        7 months ago

        It seems to me to be mainly from people who are dedicated to the Unix philosophy that programs should do only one thing, and do it well. Tying everything up into systemd doesn’t follow that. I don’t care either, and I don’t mind systemd, but some people care about it enough to throw paragraphs of hate on it wherever it’s mentioned online. And apparently it’s “bloat”, and to some " bloat" is worse than the devil himself.

        • Max-P@lemmy.max-p.me
          link
          fedilink
          arrow-up
          33
          arrow-down
          3
          ·
          edit-2
          7 months ago

          If you dig deeper into systemd, it’s not all that far off the Unix philosophy either. Some people seem to think the entirety of systemd runs as PID1, but it really only spawns and tracks processes. Most systemd components are separate processes that focus on their own thing, like journald and log management. It’s kinda nice that they all work very similarly, it makes for a nice clean integrated experience.

          Because it all lives in one repo doesn’t mean it makes one big fat binary that runs as PID1 and does everything.

          • optissima@lemmy.world
            link
            fedilink
            arrow-up
            13
            ·
            edit-2
            7 months ago

            This is what turned me around: investigating and realizing that it is following the unix philosophy, it’s just under the hood (under the other hood inside the bigger under the hood).

        • pmk@lemmy.sdf.org
          link
          fedilink
          arrow-up
          9
          arrow-down
          1
          ·
          7 months ago

          I bet some of those people use neovim instead of the more unix philosophy ed.

        • laurelraven@lemmy.blahaj.zone
          link
          fedilink
          arrow-up
          5
          ·
          7 months ago

          My main issues are that it obfuscates things and seems to consume everything it can into itself.

          Honestly, if it were more transparent and designed in a way to easily facilitate swapping out components with alternatives, I’d be a lot more okay with it.

      • steeznson@lemmy.world
        link
        fedilink
        arrow-up
        11
        ·
        7 months ago

        I think some of the hate is from the main systemd dev, Poettering, being so abrasive on social media. He’s got a hateboner for certain distros (which don’t ship with systemd as the default).

      • HubertManne@kbin.social
        link
        fedilink
        arrow-up
        2
        arrow-down
        2
        ·
        7 months ago

        I understand the concern about the future and we have seen overbloated projects have issues. In the long run though I will use what works best for me and only get into philosophical comparisons if im making the choice between relatively equal options.

  • gaael@lemmy.world
    link
    fedilink
    arrow-up
    70
    arrow-down
    1
    ·
    7 months ago

    The article talks about sudo and doas being SUID binaries and having a larger attack surface than run0 would. Could someone ELI5 what this means?

    • Max-P@lemmy.max-p.me
      link
      fedilink
      arrow-up
      217
      arrow-down
      1
      ·
      7 months ago

      Basically, the SUID bit makes a program get the permissions of the owner when executed. If you set /bin/bash as SUID, suddenly every bash shell would be a root shell, kind of. Processes on Linux have a real user ID, an effective user ID, and also a saved user ID that can be used to temporarily drop privileges and gain them back again later.

      So tools like sudo and doas use this mechanism to temporarily become root, then run checks to make sure you’re allowed to use sudo, then run your command. But that process is still in your user’s session and process group, and you’re still its real user ID. If anything goes wrong between sudo being root and checking permissions, that can lead to a root shell when you weren’t supposed to, and you have a root exploit. Sudo is entirely responsible for cleaning the environment before launching the child process so that it’s safe.

      Run0/systemd-run acts more like an API client. The client, running as your user, asks systemd to create a process and give you its inputs and outputs, which then creates it on your behalf on a clean process tree completely separate from your user session’s process tree and group. The client never ever gets permissions, never has to check for the permissions, it’s systemd that does over D-Bus through PolKit which are both isolated and unprivileged services. So there’s no dangerous code running anywhere to exploit to gain privileges. And it makes run0 very non-special and boring in the process, it really does practically nothing. Want to make your own in Python? You can, safely and quite easily. Any app can easily integrate sudo functionnality fairly safely, and it’ll even trigger the DE’s elevated permission prompt, which is a separate process so you can grant sudo access to an app without it being able to know about your password.

      Run0 takes care of interpreting what you want to do, D-Bus passes the message around, PolKit adds its stamp of approval to it, systemd takes care of spawning of the process and only the spawning of the process. Every bit does its job in isolation from the others so it’s hard to exploit.

        • Drusenija@lemmy.world
          link
          fedilink
          arrow-up
          104
          ·
          7 months ago

          (I’ll attempt this based on my understanding of both)

          Pouring a cup of juice is something an adult needs to be involved with.

          sudo is when you ask for permission to pour your own cup of juice. You ask an adult, they give you the cup and the juice, and then you’re responsible for pouring it. If the adult isn’t paying attention they may leave the fridge open for you to go back for more juice or another beverage, but otherwise you’re limited to the amount of juice the adult has given you.

          run0 is when the adult just gets you a cup of juice. You tell them what you want, they go and pour the juice, and just give you the cup with the juice in it. You never enter the kitchen, so you don’t have access to the fridge, just your cup of juice.

        • Max-P@lemmy.max-p.me
          link
          fedilink
          arrow-up
          34
          ·
          7 months ago

          Some executables are special. When you run them, they automagically run as root instead! But if sudo isn’t very, very careful, you can trick it into letting you run things as root that you shouldn’t be able to.

          Run0 DM’s systemd asking it to go fork a process as root for you, and serves as the middleman between you and the other process.

      • NuclearDolphin@lemmy.ml
        link
        fedilink
        English
        arrow-up
        20
        ·
        7 months ago

        Sounds good in theory.

        But I’ve had so many issues with D-Bus fucking shit up on my systems that I’d be very reluctant to hinge my only way of recovering from failures upon something so brittle.

        Granted, D-Bus hasn’t given me any trouble since moving to NixOS. The hell of trying to recover my arch systems from a perpetually failing D-Bus would make me very apprehensive to adopt this. I could see myself using run0 by default, but keeping sudo-rs or doas around with a much stricter configuration as a failsafe until the run0 + D-Bus + PolKit is absolutely stable and bulletproof.

        • Max-P@lemmy.max-p.me
          link
          fedilink
          arrow-up
          9
          ·
          7 months ago

          I haven’t had D-Bus problems in quite a while but actually run0 should help with some of those issues. Like, systemctl --user will actually work when used with run0, or at least systemd-run can.

          Haven’t used it yet so it’s all theoretical, but it makes sense to me especially at work. I’ve used systemd-run to run processes in very precise contexts, it’s worth using even if just to smush together schedtool, numactl, nice, taskset and sudo in one command and one syntax. Anything a systemd unit can do, systemd-run and run0 can do as well.

          I’m definitely going to keep su around just in case because I will break it the same I’ve broken sudo a few times, but I might give it a shot and see if it’s any good just for funsies.

          Just trying to explain what it does and what it can do as accurately as possible, because out of context “systemd adds sudo clone” people immediately jump to conclusions. It might not be the best idea in the end but it’s also worth exploring.

        • chameleon@kbin.social
          link
          fedilink
          arrow-up
          7
          ·
          7 months ago

          Some people are opposed to sudo being a fairly complex program with an awkward to understand configuration language and a couple of methods that can fetch config from elsewhere. Fixing upstream sudo can’t happen because those features exist and are presumably used by some subset of people, so straight up removing them is not good, but luckily doas and sudo-rs exist as alternatives with a somewhat stripped featureset and less footguns.

          Others are opposed to the concept of SUID. Underneath all the SUID stuff lies far more complexity than is obvious at first sight. There’s a pretty decent chunk of code in glibc’s libdl that will treat all kinds of environment variables differently based on whether an executable is SUID, and when that goes wrong, it’s reported as a glibc bug (last year’s glibc CVE-2023-4911 was this). And that gets all the more weird when fancy Linux features like namespaces get involved.

          Removing SUID requires an entirely different implementation and the service manager is the logical place for that. That’s not just Lennart’s idea; s6, as minimal and straight to the point as it tends to be, also implements s6-sudo{,d,c}. It’s a bit more awkward to use but is a perfectly “Unix philosophy” style implementation of this very same idea.

      • t0m5k1@lemmy.world
        link
        fedilink
        arrow-up
        1
        ·
        7 months ago

        Never had an issue. Might look for a replacement should an issue arise. Been driving Linux since sarge.

    • Para_lyzed@lemmy.world
      link
      fedilink
      arrow-up
      23
      ·
      edit-2
      7 months ago

      SUID stands for Set User ID. An SUID binary is a file that is always run with the UID of the owner user (almost always root). Note that this does not require that the user running them has root permissions, the UID is always changed. For instance, the ping command needs to set up network sockets, which requires root permissions, but is also often used by non-root users to check their network connections. Instead of having to sudo ping, any normal user is able to just run ping, as it uses SUID to run as the root user. sudo and doas also require functions that necessitate them running as root, and so if you can find out how to exploit these commands to run some arbitrary code without having to authenticate (since authentication happens after the binary has started running), there is a potential for vulnerabilities. Specifically, there is the privilege escalation, which is one of the most severe types of vulnerabilities.

      run0 starts using systemd-run, which does not use SUID. Instead, it runs with the permissions of the current user, and then authenticates to the root user after the binary has already started to run. systemd-run contacts polkit for authentication, and if it succeeds, it creates a root PTY (pseudo-terminal/virtual terminal), and sends information between your session and the root PTY. So this means that in order to achieve privilege escalation with run0 as root, you have to actually authenticate first, removing the “before authentication” attack surface of sudo and doas.

      TL;DR SUID binaries will always run as the owner (usually root), even before any form of authentication. run0 will start with the permissions of the current user, and then authenticate before running anything with root permissions.

    • ryannathans@aussie.zone
      link
      fedilink
      arrow-up
      2
      arrow-down
      1
      ·
      7 months ago

      Suid is a bit set on executables that results in them being run as the user that owns the file without needing a password, for example, passwd as root.

      Run0 ignores this bit

      • flux@lemmy.ml
        link
        fedilink
        arrow-up
        1
        ·
        7 months ago

        What a nice succinct explanation!

        But also completely useless. Run0 ignores the suid bit for the same reason as 99% of command line apps do: it ignores because it isn’t relevant to its functionality.

    • purplemonkeymad@programming.dev
      link
      fedilink
      arrow-up
      3
      ·
      7 months ago

      Did they think about how far I would have to move my hand to type it? Sudo is only in two easy to reach places on the keyboard, run0 is 4 separate areas of the keyboard, one two rows from home and none on the home row.

      I’m only partially joking.

    • laurelraven@lemmy.blahaj.zone
      link
      fedilink
      arrow-up
      21
      arrow-down
      1
      ·
      7 months ago

      I’d just like to interject for a moment. What you’re referring to as Linux, is in fact, SystemD/Linux, or as I’ve recently taken to calling it, SystemD plus Linux. Linux is not an operating system unto itself, but rather another free component of a fully functioning SystemD system made useful by the SystemD corelibs, shell utilities and vital system components comprising a full OS as defined by POSIX.

      Many computer users run a modified version of the SystemD system every day, without realizing it. Through a peculiar turn of events, the version of SystemD which is widely used today is often called Linux, and many of its users are not aware that it is basically the SystemD system, developed by the SystemD Project.

      There really is a Linux, and these people are using it, but it is just a part of the system they use. Linux is the kernel: the program in the system that allocates the machine’s resources to the other programs that you run. The kernel is an essential part of an operating system, but useless by itself; it can only function in the context of a complete operating system. Linux is normally used in combination with the SystemD operating system: the whole system is basically SystemD with Linux added, or SystemD/Linux. All the so-called Linux distributions are really distributions of SystemD/Linux!

  • Yozul@beehaw.org
    link
    fedilink
    arrow-up
    50
    arrow-down
    5
    ·
    7 months ago

    This is fine, but why does everything need to be part of Systemd? Like, seriously, why can’t this just be an independent project? Why must everything be tied into this one knot of interdependent programs, and what’s going to happen to all of them when the people who are passionate about it and actually understand all the stupid ways they interrelate move on with their lives? Are we looking at the formation of the next Xorg? Will everybody being scrambling to undo all of this in another 20 years when we all realize it’s become an unmaintainable mess?

    • Melmi@lemmy.blahaj.zone
      link
      fedilink
      English
      arrow-up
      34
      arrow-down
      1
      ·
      edit-2
      7 months ago

      Systemd does a lot of things that could probably be separate projects, but run0 is an example of something that benefits from being a part of systemd. It ties directly into the existing service manager to spawn new processes.

      • nous@programming.dev
        link
        fedilink
        English
        arrow-up
        9
        arrow-down
        1
        ·
        7 months ago

        Systemd does a lot of things that could probably be separate projects,

        I dont get the hate for this - Linux is full of projects that do the same thing: coreutils, busybox, kde, gnome, different office suites, even the kernel itself. It is very common for different related projects to be maintained together under the same project/branding with various different levels of integration between them. But people really seem to only hate on systemd for this…

        • Yozul@beehaw.org
          link
          fedilink
          arrow-up
          4
          ·
          7 months ago

          I guess for me the difference is that the kernel is just way beyond what I can understand and has never had any viable alternatives, gnome I really don’t like, and everything else you listed is just collections of simple stuff that aren’t actually very interdependent. Systemd is a giant mess of weirdly interdependent things that used to be simple things. Sure, some of them weren’t great, but every major distro abandoning all of the alternatives feels like putting all of our eggs in one basket that’s simultaneously getting more important and more fragile the bigger it gets.

          • nous@programming.dev
            link
            fedilink
            English
            arrow-up
            4
            ·
            7 months ago

            Except desktop environments - they are far from a simple loosely collection of simple stuff. They coordinate your whole desktop experience. Apps need to talk to them a lot and often in ways specific to a single DE. Theming applications is done differently for every toolkit there is, startup applications (before systemd) is configured differently, global shortcuts are configured differently by each one… If anything it is something you interact with far more than systemd and has far more inconsistencies between each one. Yet few people complain about this as much as they complain about systemd.

            Systemd is a giant mess of weirdly interdependent things that used to be simple things.

            They used to be simple things back when hardware and the way we use computers were much simpler. Nowadays hardware and computers are much more dynamic and hotplugable and handle a lot more state that needs to persist and be kept track of. https://www.youtube.com/watch?v=o_AIw9bGogo is a great talk on the subject and talks about why systemd does what it does.

          • nous@programming.dev
            link
            fedilink
            English
            arrow-up
            4
            ·
            edit-2
            7 months ago

            What standards? The old init systems were a loose collection of shell scripts that were wildly different on every distro. Other tools like sudo also broke the established standards of the time, before it you had to login as root with the root password.

            Even gnome and KDE have their own themeing standards as well as other ways of doing things. Even network manager is its own standard not following things that came before it. Then there are flatpack, snaps and app images. Not to mention deb vs rpm vs pacman vs nix package formats. Loads of things in Linux userland have broken or evolved the standards of oldern times.

            • AVincentInSpace
              link
              fedilink
              English
              arrow-up
              3
              ·
              7 months ago

              Systemd breaks its own standards. Oh, were you making a replacement for this component of systemd that does some things the systemd version doesn’t? Well the latest version of systemd just changed the Unix socket protocol that it uses to communicate with the rest of systemd from text based to binary. Sorry for the lack of warning.

              • Christopher Goss@aus.social
                link
                fedilink
                arrow-up
                2
                ·
                edit-2
                7 months ago

                @AVincentInSpace @nous I’ve always disliked the arrogance of the lead Dev & the inexorable incremental usurping of Linux functionality. I’m deeply uncomfortable with so much being absorbed into a big binary black box

      • flying_sheep@lemmy.ml
        link
        fedilink
        arrow-up
        3
        ·
        7 months ago

        Yeah, if all those complainers want something more modular, they’re free to push for protocols that allow to leverage existing components while also allowing for them to come from multiple vendors.

    • LeFantome@programming.dev
      link
      fedilink
      arrow-up
      25
      arrow-down
      1
      ·
      7 months ago

      It seems a fairly explicit goal of systemd to redefine Linux as a unified platform rather than as a kernel that can run any one of many implementations of many different services. I assume this is not just the systemd lead but also a goal of Red Hat.

      Personally, while I am ok with systemd defining itself as a single source for all this functionality, I hate that they are taking away ( or making it hard at least ) to have independent implementations of these services.

      What Chinera is doing with dinit and turnstile is really interesting. It would be nice to have feature comparable approaches to the systemd monolith that distributions could choose from.

      • lemmyreader@lemmy.ml
        link
        fedilink
        English
        arrow-up
        6
        ·
        7 months ago

        What Chinera is doing with dinit and turnstile is really interesting. It would be nice to have feature comparable approaches to the systemd monolith that distributions could choose from.

        Link for other readers about Chimera Linux, dinit, turnstile : https://chimera-linux.org/development

    • Kusimulkku@lemm.ee
      link
      fedilink
      arrow-up
      5
      arrow-down
      1
      ·
      7 months ago

      It does make sense for me to have this functionality in systemd the way they want to go about doing this.

      • Yozul@beehaw.org
        link
        fedilink
        arrow-up
        4
        ·
        7 months ago

        Okay, but why go about it that way? That can’t be the only way of making a viable alternative to sudo. Why does everything need to be part of one project? If you want to reuse code why not spin it out into a library so each component can be installed with just the libraries it needs and not the depending on the whole gigantic thing? KDE works that way. It’s obviously possible for some things, at least.

        One of my favorite things about Linux is simply fiddling around and finding the things I like and don’t and just using the ones I do. I can’t do that effectively with systemd though. Sure, it’s theoretically modular, and there are even a couple parts left that can work independently, but mostly it’s just one big block of half an operating system that all gets lumped together into one gigantic mess, and I can’t effectively just use the bits I like. It’s kind of all or nothing, and then maybe being allowed to double up on some of the things I’d like to use an alternative to… for now. It just kinda sucks the joy out of using my computer, but trying to avoid it completely is a massive pain in the butt.

        There’s no big dramatic thing wrong with systemd. Using systemd and being happy with it is a good thing. I do not object to the existence of systemd. Systemd is fine. It just makes me like Linux less is all. I am enjoying my time with my computer less than I used to, and the universal dominance of systemd is probably the biggest reason for that.

  • Eugenia@lemmy.ml
    link
    fedilink
    English
    arrow-up
    34
    arrow-down
    1
    ·
    7 months ago

    I personally don’t have a problem with run0 over sudo, however, I don’t want to have to remember to use a different command on the terminal. Just rename it “sudo”, and do the new stuff with it. Just don’t bother me having to remember new commands.

    • TechNom (nobody)@programming.dev
      link
      fedilink
      English
      arrow-up
      16
      ·
      edit-2
      7 months ago

      You can uninstall the sudo application and add sudo as an alias for run0 in your shell initialization script. That’s better than them renaming run0 to sudo, because that will prevent people from running the real sudo if they want it.

  • jeremyparker@programming.dev
    link
    fedilink
    arrow-up
    39
    arrow-down
    7
    ·
    edit-2
    7 months ago

    Me: Oh, I get it, this “Lemmy” website – it’s like The Onion but for nerds?

    My fellow lemmings: No, they’re serious. run0 is real.

    Me: Hah. The Onion, but for nerds! I love it.

  • ancap shark@lemmy.today
    link
    fedilink
    arrow-up
    28
    ·
    7 months ago

    Will this be an integral part of systemd, or will they release it as a separate thing? I mean, if I like it, but I’m not using systemd (I do use it, but I’m just thinking about it), could I use this run0 (horrible name) without having to buy into all of systemd?

    • Brunacho@scribe.disroot.org
      link
      fedilink
      English
      arrow-up
      30
      ·
      7 months ago

      it’s just a link to systemd-run which is a part of systemd, i doubt it works separately.

      but, if you use s6 as an alternative init system, s6-sudo is a somewhat equivalent aproach to how run0 works (instead of systemd-run it calls s6-ipcclient)

    • Heavybell@lemmy.world
      link
      fedilink
      English
      arrow-up
      13
      ·
      7 months ago

      The article says it works by messaging systemd to run the process as the given user, rather than being a SUID binary. So it wouldn’t work without systemd.

  • Fizz@lemmy.nz
    link
    fedilink
    arrow-up
    39
    arrow-down
    11
    ·
    7 months ago

    Sounds good. It’s a win win. People that doesn’t like the system d implementation can use doas or keep sudo. I Hate the name though. Run0 is dumb can’t they just steal the name doas

  • kixik@lemmy.ml
    link
    fedilink
    arrow-up
    3
    ·
    7 months ago

    I’m not systemd user, and I generally see this absorbing as much as possible as a terrible practice. I don’t usually comment on systemd stuff, since I’m happy just not being forced to use it.

    However, even though I don’t use it, the decision of people managing systemd really affects non systemd users. See by succeeding in getting all major distros into become systemd distros (somehow now governed by RH, if anyone cares), everything systemd absorbs tend to leave alternatives sooner or later deprecated, or abandoned.

    Even autofs is no longer part of some official repos, given systemd has its own auto mount/unmount functionality… And there are several other examples…

    At any rate, hopefully the more bloated systemd, doesn’t make it the more vulnerable. And also hopefully, doesn’t make life worse and worse to non systemd distros and users…

    BTW, before sudo there was su, so a life without sudo is possible, :)