Previously, I configured
transmission inside a Docker instance. No serious problem with the permission, maybe because everything was done by using the
root user. Just purchased new VPS and using the non-root user, then things started getting weird.
debian-tranmission) is the torrent service, serving the UI through web interface. Because I don’t want to SFTP to download things from there or to set an FTP service, I set up
www-data) to serve a directory listing by using a PHP script called Directory Lister. It is quite an active project FYI.
the problem with the original setup
Let’s say that Transmission’s download folder is located at
~/downloaded, what I will usually do is (credit to Matthew Manning):
sudo chown $USER:debian-transmission ~/downloaded sudo chmod g+w ~/downloaded
But the problem with this setup is that if the
nginx is serving the folder
~/downloaded as declared in its
vHost file, very likely when you try to access it from the web browser it will return Error 403. If you give
www-data) the permission to write into the
~/downloaded folder, that will remove the ability of
debian-transmission to write into that folder.
How to fix this?
assign 2 users into a new group
Fun fact 1: users in Linux can belong to more than one group, hence a user can be in multiple groups. That’s convenient!
I am suggesting a fix where we create a new
group, then add
debian-transmission to that
group. Create a new
group with the name
newgroup or whatever name you prefer by using the
groupadd command, then add 2 users to that group by using the
$ sudo groupadd newgroup $ sudo usermod -a -G newgroup www-data $ sudo usermod -a -G newgroup debian-transmission
Now all that’s left is to set the permissions on that directory.
$ sudo chgrp -R newgroup /path/to/directory $ sudo chmod -R 770 /path/to/directory
chmod 770 means:
rwxrwx--- (symbolic) User: read, write and execute Group: read, write and execute Others: no permission
To know how many users are there in your box, run this command:
compgen -u. To know how many groups, run this command:
compgen -g. Cleaner output as compared to