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
4 comments:
THANKS MAN! REALLY NEEDED THIS U ROCK
Hi there! I'm trying to do that, but transmission is ignoring the user and group I am changing on the /etc configuration...
you should change the user here, in order to run the transmission as a different user:
/etc/systemd/system/multi-user.target.wants/transmission-daemon.service
then the settings.json file can be found under the new user folder:
e.g /home/pi/.config/transmission-daemon/
Well... it kind of depends what you're running transmission on. I'm using a dockerized version and that means the config files are different and I don't use systemd to manage it. Rather I run it in foregreound and docker gets the job done to keep it alive.
But in normal circumstances on a RPi you're right. Thanks for bringing it up!
Post a Comment