this post was submitted on 09 May 2024
2 points (100.0% liked)

Linux

47557 readers
615 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS
top 31 comments
sorted by: hot top controversial new old
[–] furzegulo@lemmy.dbzer0.com 2 points 4 months ago (1 children)

i'm fine with this nor do i have a problem with systemd in genereal

[–] Dracocide@lemm.ee 0 points 4 months ago (1 children)

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 0 points 4 months ago (1 children)

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 0 points 4 months ago* (last edited 4 months ago) (1 children)

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 1 points 4 months ago* (last edited 4 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).

[–] gaael@lemmy.world 1 points 4 months ago (1 children)

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 3 points 4 months ago (2 children)

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.

[–] KISSmyOSFeddit@lemmy.world 1 points 4 months ago (1 children)
[–] Drusenija@lemmy.world 2 points 4 months ago (1 children)

(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.

[–] caseyweederman@lemmy.ca 0 points 4 months ago (2 children)
[–] vrighter@discuss.tchncs.de 1 points 4 months ago

when in need, cry out for mommy!

[–] magnor@lemmy.magnor.ovh 1 points 4 months ago

Gagagoogoo Gagaga

[–] 9488fcea02a9@sh.itjust.works 0 points 4 months ago (2 children)

Why not just fix sudo then?

[–] chameleon@kbin.social 1 points 4 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.

[–] Andromxda@lemmy.dbzer0.com 1 points 4 months ago

Or just use doas, it's still more secure than sudo

[–] eugenia@lemmy.ml 1 points 4 months ago (1 children)

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@programming.dev 2 points 4 months ago* (last edited 4 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 1 points 4 months ago* (last edited 4 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.

[–] Adanisi@lemmy.zip 1 points 4 months ago* (last edited 4 months ago) (1 children)

Fuck off Poettering. Stop trying to absorb the whole system.

EDIT: apparently systemd absorbing the whole system with it's nonstandard, monolithic nightmare is a good thing, judging from downvotes. Carry on.

[–] technom@programming.dev 1 points 4 months ago (2 children)

The vast majority of Linux users consider systemd as a good thing because it apparently makes system administration easier. They also don't agree that systemd is monolithic, because it's actually designed modular.

But of course there are detractors. The only thing I like about systemd is its declarative service definition and parallel service startup. But if I wanted to run an OS with bloated and inscrutable software (even with the source code), my choice wouldn't be Linux or Systemd.

I also routinely switch parts of my OS. This is harder with systemd. Although it is modular, the modules are so tightly coupled that it will prevent the replacement of modular components with alternatives. Frankly, I think systemd is killing the innovation in system component development.

[–] Zucca@sopuli.xyz 1 points 4 months ago (1 children)

because it’s actually designed modular

Oh? Try to use systemd without logind or journald. logind isn't so bad, but journald was bad enough, that I gave up with systemd.

[–] technom@programming.dev 2 points 4 months ago (1 children)

I use Gentoo with OpenRC. So my position in this matter should be clear. Anyway, check the last paragraph again to see what I think about systemd's modularity.

[–] Zucca@sopuli.xyz 2 points 4 months ago (1 children)

Yes. I agreed with you. But I made it sound like something else. Bad wording on my side.

As I'm too Gentoo openrc user. I also use seatd+greetd instead of (e)logind and replacing sysvinit with openrc-init. The availability of choices made me do it!

[–] technom@programming.dev 2 points 4 months ago

Oh! I misunderstood. Sorry! Glad to meet a fellow Gentoo here!

[–] laurelraven@lemmy.blahaj.zone 1 points 4 months ago

Yeah... Not sure how everyone lets them get away with calling it "modular" when it's next to impossible to swap out the modules

[–] jaypatelani@lemmy.ml 0 points 4 months ago (2 children)

SystemD looks to replace Linux kernel with kern0

[–] laurelraven@lemmy.blahaj.zone 1 points 4 months ago (1 children)

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!

[–] markstos@lemmy.world 1 points 4 months ago
[–] neutron@thelemmy.club 1 points 4 months ago

So we'll have to say GNU/Linux/SystemD soon?

[–] arran4@aussie.zone 0 points 4 months ago (1 children)

Sounds reasonable. But I don't like the 0 in the name.

[–] purplemonkeymad@programming.dev 1 points 4 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.