The why?
I need to download files from the Internet using BitTorrent protocol (like Ubuntu ISO for example) and I'd like to do that using a computer that's serving as my home server.
What's difficult?
First of all there's no place in any of the configuration files to tell you which user is it going to be that's running the daemon. That secret is safely guarded inside /etc/init.d/transmission-daemon. You'll find this kind of line:
USER=debian-transmission
So you'd think that's all then. We change it to something like
USER=nobody:nogroup
and life's easy. Well, not exactly. If you try to do this you'll see that transmission-daemon tries to start but fails rapidly. To diagnose what's wrong you'll want to use this daemon in foreground mode like this
transmission-daemon -f --config-dir /var/lib/transmission-daemon/info --log-debug
But that'll only tell you that there are permission issues and that some files that apparently may even have permissions like 666 on folders that will have 777 permissions will still not be out of reach. The problem lies in the default configuration of the daemon. It keeps it's configuration data in /var/lib/transmission-daemon/info however it's customary to store such information in /etc which Ubuntu and Mint do. And so there's a /etc/transmission-daemon/settings.json with the ownership of debian-transmission and it's then linked to the place where Transmission awaits it (/var/lib/transmission-daemon/info/settings.json)
The solution
So here's what I did. I first stopped the deamon or else my configuration file would get overwritten. Then I changed the ownership of the entire structure of /var/lib/transmission-daemon to nobody:nogroup like so
chown -R nobody:nogroup /var/lib/transmission-daemon
Then I removed the /var/lib/transmission-daemon/info/settings.json link and replaced it with the /etc/transmission-daemon cusine:
sudo mv /etc/tranmission-daemon/settings.json /var/lib/transmission-daemon
and I updated the ownership of that file again:
chown -R nobody:nogroup /var/lib/transmission-daemon/info/settings.json
That's it! Transmission now runs as user nobody:nogroup creating new files and folders as nobody:nogroup and life is easier again