I noticed Debian does this by default and Arch wiki recommends is citing improved security and upstream.
I don’t get why that’s more secure. Is this assuming torrents might be infected and aims to limit what a virus may access to the dedicated user’s home directory (/var/lib/transmission-daemon
on Debian)?
It’s not directly related to the torrent or its content no. It’s more related to the potential bugs in Transmission that might be exploited to propagate viruses.
Since Transmission has to exchange data with un-trusted parties, before knowing whether the data is relevant to the torrent you are downloading, anyone could exploit bugs that exist in the parsing of these messages.
So running Transmission as a dedicated user limits what an attacker may have access to once they take control of Transmission through the exploit of known or unknown bugs.
Obviously, this user need to have many restriction in place as to prevent the attacker from installing malware permanently on the machine. And when you copy over data that has been downloaded by Transmission, you’d have to make sure it has not been tampered with by the attacker in an attempt to get access to the data available to your real account.
If you just use transmission occasionally, not on a server, I would not bother with it. Either use the flatpak version for some sandboxing and similar security guarantees as having a dedicated user running Transmission, or use an up to date version (the one from your distro should be fine) and don’t leave it running when you do not need to.
I’ve decided to use Docker
It helps protect you because if the application in question is compromised in any way (or has a flaw, i.e. an accidental
rm -rf /*
), the only access it has is limited to the user it is run as. If it is run as root, it has full administrative privilege.Isn’t that a risk for anything downloaded, assuming I run transmission as my user, not root?
Is your user in the sudo group? The user transmission should not be
My user is, yes. But there has to be an exploit in sudo for the program to elevate itself using it without the user knowing, no? It’s possible for sure but I’m seeing this type of a precaution on a torrent client for the first time.
The point of security isn’t just protecting yourself from the threats you’re aware of. Maybe there’s a compromise in your distro’s password hashing, maybe your password sucks, maybe there’s a kernel compromise. Maybe the torrent client isn’t a direct route to root, but one step in a convoluted chain of attack. Maybe there are “zero days” that are only called such because the clear web hasn’t been made aware yet, but they’re floating around on the dark web already. Maybe your passwords get leaked by a flaw in Lemmy’s security.
You don’t know how much you don’t know, so you should be implementing as much good security practices as you can. It’s called the “Swiss Cheese” model of security: you layer enough so that the holes in one layer are blocked by a different layer.
Plus, keeping strong security measures in place for something that’s almost always internet connected is a good idea regardless of how cautious you think you’re being. It’s why modern web-browsers are basically their own VM inside your pc anymore, and it’s why torrent clients shouldn’t have access to anything besides the download/upload folders and whatever minimal set of network perms they need.
Then run it as your user. It’s not best practice but you do you
@Quail4789 @mik Anything that you execute, yes.
It’s more the situation where the torrent/magnet string itself (or some peer connection) has some clever hack that exploits a bug in Transmission, allowing it to execute arbitrary code AS transmission. I’m skeptical there’s a big risk of that, but the security theater kids LOVE sand boxing these days
Has there ever been such an exploit? Given all other torrent clients I’ve seen just run as your user by default, is there something different in transmission over others that make it more vulnerable?
Not of which I’m aware. Transmission is more intended to run on a server though. You certainly can just run the local GUI, but it can run as a daemon on a server and then you can use a web interface or app, so its working more on a server v user app paradigm (Everything on a modern server like that is gonna run as its own user)
The point is also to minimize potential damages caused by a bug in the software. Just this year there have been multiple data-destroying bugs in publicly released software. If the app runs as a server it’s usually trivial to have it run as a dedicated user, with just enough permissions to do its job.
It’s just good practice, even though the risks might be low why risk it at all?
It may be mostly “security theater” but it requires almost no extra effort and drastically increases the difficulty of compromise by adding privilege escalation as another requirement to gaining root access.
Not only that: It protects your data. The Unix security model is unfortunately stuck in the 1970s: It protects users from each other. That is a wonderful property, but in todays world you also need to protect the users from the applications they are running: Anything running as your user has access to all your data. And on most computer systems the interesting data is the one the users out there: Cryptogrqphic keys, login information, financial information, … . Typically users are much more upset to loose their data than about some virus infecting the OS files, those are trivial to fix.
Running anything as anlther user stops that application from having access to most of your data.
Running any service as a dedicated user with limited permissions is more secure than not. It’s not just transmission. This is a very basic method of increasing security on any running machine. https://en.m.wikipedia.org/wiki/Principle_of_least_privilege