this post was submitted on 06 Jul 2026
59 points (90.4% liked)

Privacy

49644 readers
370 users here now

A place to discuss privacy and freedom in the digital world.

Privacy has become a very important issue in modern society, with companies and governments constantly abusing their power, more and more people are waking up to the importance of digital privacy.

In this community everyone is welcome to post links and discuss topics related to privacy.

Some Rules

Related communities

much thanks to @gary_host_laptop for the logo design :)

founded 6 years ago
MODERATORS
 

Ultimately, the problem is much bigger than /etc/machine-id since there are dozens of hardware IDs on any PC that can be used by malicious telemetry to silently to uniquely identify and track you, and the only solution to this problem currently is to make sure you really trust any software you use.

Systemd, in particular, acts a lot like malware for Linux because if you try to reset your machine-id a long list of stuff that breaks in in it. You could make a cron script to reset /etc/machine-id every day, but machine-id is so deep in the stack that you'd also have to reboot to ensure it's updated.

top 39 comments
sorted by: hot top controversial new old
[–] Anonymous_Leaker@lemmy.world 2 points 3 hours ago* (last edited 3 hours ago)

You ever tried Kodachi Linux?

[–] dropdrip@lemmy.ml 5 points 8 hours ago (1 children)

I was unaware of this. As far as I can understand this is a design for admins who manage fleets and virtual machines, so it's not surprising it comes from Lennart and systemd. However, even openbsd has /etc/machine-id. Over in bsd land it seems to come from dbus. Is the file a systemd design or a dbus design? Is it something users should be concerned about... probably, but all of computing is a nightmare. Just another fire to add to the fire pit.

[–] yogthos@lemmy.ml 0 points 7 hours ago

Yeah, since OpenBSD doesn't use systemd, that points to dbus origins for the file.

[–] AnnaFrankfurter@lemmy.ml 2 points 9 hours ago
[–] kwarg@mander.xyz 5 points 12 hours ago (1 children)

so, for the noobs, what do we do? do we just live with thay file untouched there? :S

[–] yogthos@lemmy.ml 3 points 12 hours ago

Pretty much...

[–] FineCoatMummy@sh.itjust.works 5 points 19 hours ago (3 children)

I tried librewolf to see if it reads /etc/machine-id. It does not. At least not to my trials so far. I used the strace cmd to watch it. I tried when starting librewofl. And again when loading various sites.

LW does read MANY font related files from /etc. That could be a fingerprint ofc. Esp if a site reads back the canvas! Fonts are a majority of what LW reads from /etc. LW also reads /etc/os-release. IDK what it does with that. That file does not have a unique machine id, but it ids your OS and version. There are a few others too. Like /etc/localtime.

IDK about Firefox. I didn't try it. Maybe it would be much worse. Someone can try and report here about it?

My guess is, every normal browser can be accurately fingerprinted. Even with fingerprint resistance like FF forks. Esp if JS is enabled!! There are just toooo many ways. ID resolution services are used by most big sites now. They employ very smart and clever data scientists. I doubt we can block every method they have, in a good enough way.

Tor Browser tries! But that is blocked by sites that use identity resolution. Also, TBH I don't even believe Tor can block enough fingerprinting. Some like TLS fingerprints are not even blockable by a browser.

[–] kuerbiskernoel@feddit.org 3 points 2 hours ago

What about terminal browsers?

[–] Anonymous_Leaker@lemmy.world 2 points 3 hours ago* (last edited 3 hours ago)

You ever tried Kodachi linux?

[–] TwilightKiddy@programming.dev 1 points 16 hours ago

I'd guess it's some standardized way to determine which OS the browser is running under? Like it does not report the specific Linux version in the user agent header, but it does say that it's Linux and it's architecture. I'd assume there is just some standardized library for it and for Linux the easiest way to know where the hell your binary got launched is /etc/os-release.

[–] onlinepersona@programming.dev 14 points 1 day ago (1 children)

Wat? If you have something running on your system that's tracking you, you are already fucked. It doesn't require that file. It can just create one anywhere on the system and use it, if need be.

[–] yogthos@lemmy.ml 5 points 21 hours ago

The problem with machine-id specifically is that it's become a standard way for the browser to identify itself. There obviously other ways you can be tracked, but this is a very low bar and a common way of sites tracking people.

[–] marcie@lemmy.ml 11 points 1 day ago* (last edited 1 day ago)

The bigger concern here is that the app isn't sandboxed, not machine id. Run something like secureblue that has better sandboxing by default

https://github.com/secureblue/secureblue/issues/1121

[–] hirihit640@sh.itjust.works 14 points 1 day ago (3 children)

Flatpaks might be the solution here. Flatpaks run in containers, they might have isolated machine-id already.

Though tbh if you don't trust the apps on your Linux system, you have more to worry about than fingerprinting. Regular executable binaries and system packages have zero isolation, any malware can wreak havoc. Flatpaks are getting there but many apps still ask for permissions they don't need, increasing risk.

For untrusted apps, run them in a browser (if a web-app), a container/distrobox, or a VM.

[–] 0t79JeIfK01RHyzo@lemmy.ml 2 points 1 hour ago

Flatpak provides access to /etc/machine-id by default.

flatpak run org.torproject.torbrowser-launcher && TOR_PROCESS_ID=$(flatpak ps | grep tor | cut -f 1 | head -n 1) && clear && flatpak enter $TOR_PROCESS_ID cat /etc/machine-id

https://docs.flatpak.org/en/latest/sandbox-permissions.html

[–] Ferk@lemmy.ml 6 points 19 hours ago* (last edited 19 hours ago)

Note that flatpaks are using systemd's sd_id128_get_machine_app_specific API, which generates an app-specific id that's derived from the original machine-id.

The app-specific id will be unique per-app so it won't be shared between different apps / flatpaks. The apps can't know the original machine-id, but the id they get would still be unique on every restart of the app and in theory does not prevent different sessions within the same app to be fingerprinted as coming from the same user.

[–] yogthos@lemmy.ml 12 points 1 day ago* (last edited 1 day ago) (2 children)

The browser itself is one of the biggest vectors of attacks here. Both Chrome and Firefox indirectly via libdbus, read your machine-id. Firefox shares browsing data and other unique info with 'with partners, service providers, suppliers and contractors' including Cloudflare and Google.

[–] umbrella@lemmy.ml 1 points 6 hours ago

is that on their tos?

[–] hirihit640@sh.itjust.works 3 points 1 day ago (2 children)

Well browsers are apps, just like any other app on your system. So the same advice applies. If you don't trust chrome and firefox but you still want to run them, use a container/distrobox/VM. There are plenty of more private browsers though, like Brave or Mullvad Browser.

Web apps, on the other hand, run inside the browser sandbox, which is an entirely different environment. They don't have access to machineid unless the browser gave it to them, for example via a browser extension. There's still a lot of fingerprinting vectors though, so use Tor Browser or Mullvad Browser, ideally with JS disabled. This website is a great way to check your fingerprint: https://abrahamjuliot.github.io/creepjs/

[–] yogthos@lemmy.ml 13 points 1 day ago (1 children)

Browsers aren't just apps, they're effectively platforms which run all kinds of apps you end up accessing online when you visit sites. Since the browser leaks the id to these apps, you're effectively trusting the apps. Sure, you could run your browser in a VM or whatever, but that's missing the point entirely. The real question is why your machine needs to have a unique identifier, and why the fuck it's baked into functionality of systemd which is now replacing the traditional tool chain with a monolith.

And yes, I'm fully aware of other metadata that the browser leaks, and the fact that people are just starting to talk about that is also a problem. Running with Js disabled or putting a browser in a VM, is not really a solution for vast majority of people. The issue is that we have systems that are designed to enable tracking by default, and you have to jump through hoops to get around that. Telling people here are the hoops isn't really helpful.

[–] hirihit640@sh.itjust.works 4 points 1 day ago* (last edited 1 day ago) (1 children)

I'm not familiar with the purposes or history of machine-id, I'd guess that it's just a legacy artifact that can't be easily removed now.

There's definitely a lot to be desired when it comes to privacy on Linux. Unfortunately Linux was designed before many of the privacy and security best practices became established, which is why is it less secure than modern systems like Android (source). Trying to re-architect Linux at this point would be an insane undertaking. Machine-id is just one thing in a long list that would need to be changed. Nothing wrong with advocating for it, but I just wouldn't expect it to happen for at least 5 years.

Containers are a modern technology with isolation and security as a core goal from the start. And by now, containers are already deeply integrated into the Linux community, for example look at how the entire Fedora Atomic project (including Bluefin, Aurora, Bazzite) uses container-based infrastructure to build the OS images. So that's why I've been moving towards it as a solution for my privacy needs, and I recommend others look into it as well.

Edit: rewording some sentences

[–] yogthos@lemmy.ml 9 points 1 day ago (1 children)

Systemd was designed long after a lot of these security practices and problems with tracking were well understood. There's very little excuse for it doing a lot of the things it does. Systemd is literally re-architecting how Linux was meant to work originally, and for the worse. I get the impression you're not actually familiar with the history of Linux or Unix philosophy in general.

Having to put everything into containers is really just a work around bad architecture that keeps being pushed in the Linux world. Containers are useful, and probably the only way to actually keep apps from having too much access to the system at this point, but I don't see why bad architecture should be accepted and then have to be worked around.

[–] hirihit640@sh.itjust.works 2 points 1 day ago (1 children)

I get the impression you're not actually familiar with the history of Linux or Unix philosophy in general.

I've read enough mailing lists and issue trackers to know that they are far more complex than they look on the surface, so I definitely won't claim authority about them.

Take this one that I found recently: https://bugzilla.mozilla.org/show_bug.cgi?id=1618257

It's a bug report about Firefox's favicon cache. They started looking into it, but found out that if they fix this bug, it creates fingerprinting risk, so they have to address that as well. And so the issue gets stuck in limbo for like 10 years, and is still open till today.

Regarding systemd, it had to be built on top of the existing architecture, and more importantly, had to appeal to the Linux community to be adopted, so it couldn't change too much. I assume they have their reasons for depending on machine-id. It might not even be a direct dependency. Maybe it allowed easier adoption by the big players.

I don't know, and honestly, I don't really care about digging into every single fingerprinting vector (of which there are probably tons more), when I can just use containers. And while using containers might feel like a hack or workaround, if we look at Flatpak, it seems like containers are becoming the framework for app isolation on Linux, similar to what already exists on Android. So it may very well become the official solution to privacy and security on Linux.

[–] yogthos@lemmy.ml 6 points 21 hours ago (3 children)

My point is that systemd did not have to be built at all. It's an abomination that goes directly against the original philosophy of Linux creating a monolithic monstrosity to replace individual and composable programs that used to be the way init works. Now, everything is tied to it and it's become like a cancer in a linux system that's inoperable. The whole system-id problem is just one example of why this is a terrible design.

[–] hirihit640@sh.itjust.works 2 points 14 hours ago* (last edited 14 hours ago) (1 children)

Well I'm not here to argue about systemd in general, that's a far larger topic. All I'll say is that from my experience, systemd felt cleaner than the competitors at the time and created a lot of conventions and standards that are taken for granted today.

For example, to bring this back to the original topic, another commenter in this thread mentioned that systemd provides an API for generating randomized machine-ids that flatpak utilizes.

Though flatpak is gaining more dependency on systemd, and I don't think that coupling is necessary, so I've been keeping an eye out in that space.

Edit: researching a bit more on the topic, there's some interesting comments here about how systemd is not as monolithic as people think

flatpak is not depending on systemd as a whole, they're depending on a new component called systemd-appd...it is an API + a spec, just like what you're asking for. But it's implementation first, because any API + spec designed by committee rather than being driven by an implementation universally sucks.

[systemd] not a monolith, which is obviously true because there is no distribution that ships all of it turned on by default. Fedora comes close, but most other distros pick and choose which parts of systemd to use.

systemd-appd will likely depend on some but not all of the rest of the systemd system.

[–] yogthos@lemmy.ml 2 points 13 hours ago (1 children)

My view is that systemd was a mistake and I disagree with it on a philosophical level. I see stuff like machine-id getting baked in as a direct extension of this philosophy.

[–] hirihit640@sh.itjust.works 1 points 11 hours ago (1 children)

Many software decisions are more about strategy than philosophy. Compromising on ideals and principles to gain adoption. As mentioned before, I would not be surprised if dependence on machine-id was simply strategy.

Systemd might be replaced in future. But currently it's used in all major distros. It's design and ideas will probably inspire whatever replaces it. If they had spent their time clinging to philosophy and ideals rather than making compromises, then they might have never left the ground.

[–] yogthos@lemmy.ml 2 points 11 hours ago (1 children)

I'm not sure what was supposed to be leaving ground in your mind to be honest, or whose strategy you're talking about. Linux used to be a community driven effort rather than some company trying to gain growth. Why is gaining adoption so important all of a sudden when Linux has been around for ages without mass adoption, and it's been doing just fine. Seems like part of the issue is actually commercialization because a lot of the decisions are driven by distros that are backed by companies who do want to make profit off the platform.

[–] hirihit640@sh.itjust.works 2 points 9 hours ago* (last edited 9 hours ago) (1 children)

Well one reason why adoption matters is network effects. Increased Linux popularity, means that more developers will develop for Linux. At a broader level it means that the ideology and principles of the Linux community, like software freedom and privacy, can produce quality results and products for the masses. That brings more power for the Linux community, and more adoption of their principles.

On the flipside, if the base Linux experience is mediocre, then nobody will bother developing apps and extensions for it.

If you are completely happy with Linux the way it is now, then that adoption probably doesn't mean a lot. But I personally think there's a ton more that can be done in the Linux and privacy world

[–] yogthos@lemmy.ml 2 points 9 hours ago (1 children)

The whole context here is that Linux philosophy and principles are being gutted by companies trying to make a buck off it. In my view, benefits of wide adoption need to be balanced with actually retaining the principles which make Linux a good platform.

Again, Linux has been around a long time before commercial interests started fucking with it. And I don't think chasing adoption for the sake of it is healthy. I'd rather it grows at its own pace. It's already a big enough community to make it sustainable indefinitely, there's absolutely no rush to gain market share here.

[–] hirihit640@sh.itjust.works 2 points 6 hours ago* (last edited 6 hours ago)

I'm not sure if the principles have been gutted like you say. Fedora, for example, uses systemd, and is supported by the commercial RedHat. And yet it is well regarded in the Linux community, and has firmly stuck to open source and pro-privacy principles. They foster diversity too, like the Fedora Atomic and Universal Blue projects, which make it easy to fork distros and create new ones. Not to mention, Linus Torvalds uses Fedora.

One could say that Linux is already growing at its own pace. There are some that wish it would move slower, some that wish it would move faster. systemd wasn't forced on distros. in fact Ubuntu fought it for years, since it was created by their competitor after all. Yet Ubuntu still adopted it in the end, so it must have been worth it.

The way I see it, back in the day, Linux was too fragmented in some areas, and at the same time lacking isolation in others. Systemd standardized and addressed the fragmentation, while containers introduced isolation where needed. The lines are being re-drawn. But I don't think the principles of Linux were compromised that much.

After reading through this whole comment thread, reading this was the last straw. I've been planning my exodus for a while.

Soon, I shall say "I use Artix, btw".

[–] eldavi@lemmy.ml 2 points 20 hours ago (1 children)

My point is that systemd did not have to be built at all. It’s an abomination that goes directly against the original philosophy of Linux creating a monolithic monstrosity to replace individual and composable programs that used to be the way init works. Now, everything is tied to it and it’s become like a cancer in a linux system that’s inoperable.

amen and try sharing this view on c/linux or c/privacy. lol

[–] yogthos@lemmy.ml 3 points 20 hours ago

Yeah, I have a hard time understanding the justification for systemd. The only real argument I've seen is that it standardizes the process, but that could've been done as a spec where you define a common config format, lifecycle, etc., and then keep the actual utilities decoupled from each other, but behaving in a uniform way.

[–] sudoer777@lemmy.ml 1 points 1 day ago (1 children)

Running browsers safely in a Linux container/sandbox is not straightforward, for instance Flatpak blocks unprivileged namespaces which breaks the browser's own sandboxing so it's recommended to avoid Flatpak browsers.

[–] hirihit640@sh.itjust.works 2 points 1 day ago (1 children)

Tbh I haven't kept up with that issue for a while now. I'm guessing it still isn't addressed. I usually disable JS anyways so that mitigates almost all attacks. But I have installed browsers in Distrobox before, installing the browser as a system package instead of a Flatpak. Do you know how the sandboxing works in that case?

[–] sudoer777@lemmy.ml 2 points 1 day ago

Not sure, although I just did some searches and it appears that Distrobox uses rootless Podman which supports nested unprivileged namespaces. And if it broke the saneboxing there probably would have been an error when you tried to run it.

[–] sudoer777@lemmy.ml 4 points 1 day ago* (last edited 1 day ago) (1 children)

The Impermanence module for NixOS recommends persisting /etc/machine-id. Is there any downside to not persisting it? (which is currently what I'm doing because I get errors when I do)

[–] yogthos@lemmy.ml 4 points 21 hours ago

for most desktop users, not persisting /etc/machine-id is usually fine, but there are some specific scenarios where it can cause issues. Systemd uses machine-id to tag log entries. If it changes, you might lose the ability to correlate logs across boot sessions in journalctl. This is mostly an annoyance for debugging rather than a functional problem. A few NixOS modules like services.openssh or certain mail servers use machine-id for generating default host keys or identifiers. Changing it might cause warnings on first boot after a change, but usually nothing breaks since they fall back to other identifiers.