Si eres un fan de los torrents y te gusta trastear con equipos en linux o simplemente es tu sistema operativo base seguramente conocerás este gestor. Esta vez te quiero enseñar cómo cambiar el usuario de Transmission en linux.
En mi caso, y por si te sirve como idea, Transmission es el gestor de paquetes torrent que tengo instalado en una Raspberry Pi. De esta forma, puedes tener la carpeta compartida de forma remota por samba, y no es necesario que dejes tu equipo encendido siempre para que esté compartiendo o descargando tus archivos completamente legales.
Si tenemos en cuenta que una Raspberry conectada a una fuente de alimentación de pc con un disco duro consume en torno a los 12-15W, te darás cuenta en seguida de que es un ahorro sustancial a la opción de tener encendido tu equipo toda la noche. Además puedes acceder a los archivos desde cualquier equipo de la red.
Cómo cambiar el usuario de Transmission en cualquier linux
Ahora bien, cuando instalas Transmission, a la hora de ejecutarlo te habrás fijado en que el nombre de usuario que utiliza tanto para el proceso como para los archivos es debian-transmission.
Esto no tendría por qué ser un problema, siempre y cuando no interfiera con el usuario que solemos utilizar, por ejemplo para poder gestionar manualmente los archivos descargados o los permisos.
Para solucionar este problema, lo que podemos hacer es cambiar el nombre de usuario, de forma que transmission trabaje con el mismo usuario con el que tengamos acceso.
No es muy complicado, aunque deberemos tener varias cosas en consideración y modificar los permisos y contenido de varios archivos.
Cambiar el usuario de arranque de transmission
Lo primero será indicar a Transmission con qué usuario queremos que arranque. Doy por sentado que ya lo tienes instalado y funcionando, pero por si no es así será tan simple como ejecutar apt-get install transmission transmission-daemon.
Antes de nada debes saber que para poder modificar la configuración será necesario que cierres completamente transmission, puedes usar este comando:
service transmission-daemon stop
Asegúrate de que está detenido, puedes hacerlo con el comando ps de la siguiente forma:
ps aux |grep transmission
Si te aparece en la lista más de un registro (el primero será el comando de búsqueda ps) es que no se ha cerrado del todo, deberás copiar la id y hacer kill id. Ahora que ya está detenido sigamos.
Para cambiar el usuario editaremos el siguiente archivo:
nano /etc/init.d/transmission-daemon
En el archivo al principio tenemos que modificar la línea que indica USER cambiándola por el que queramos, por ejemplo:
USER=debian-transmission por USER=vichaunter
Voy a usar vichaunter como usuario en el resto de comandos, cámbialo por el que quieras utilizar tú. Supongo que tienes creado el usuario que vas a utilizar, sino con un simple useradd vichaunter lo crearás.
Con esto ya tendremos listo Transmission para que se ejecute con el nombre de usuario correcto la próxima vez que lo lancemos.
Cambiar la configuración interna de Transmission
Ahora falta arreglar un par de cosillas, ya que hay otor archivo que guarda la configuración del daemon de transmission. Para ello vas a reemplazar el contenido de este archivo:
nano /etc/systemd/system/multi-user.target.wants/transmission-daemon.service
Con este otro:
[Unit] Description=Transmission BitTorrent Daemon After=network.target [Service] User=vichaunter Type=forking PIDFile=/var/lib/transmission-daemon/.config/transmission-daemon/trans.PID ExecStart=/usr/bin/transmission-daemon --pid-file /var/lib/transmission-daemon/.config/transmission-daemon/trans.PID --config-dir /var/lib/transmission-daemon/.config/transmission-daemon/ [Install] WantedBy=multi-user.target
Recuerda borrar todo lo que hay dentro (ctrl+k borra la línea actual) y pegar la configuración que te acabo de dejar. Ojo, que tienes que cambiar el nombre de usuario por el tuyo.
Ahora ejecuta estos dos comandos:
touch /var/lib/transmission-daemon/.config/transmission-daemon/trans.PID chown vichaunter.vichaunter /var/lib/transmission-daemon/.config/transmission-daemon/trans.PID
Arreglar permisos de archivos al cambiar el usuario a Transmission
Ahora te tocará solucionar el problema de permisos. Piensa que todos los archivos con los que se ha instalado transmission están configurados para funcionar con el usuario que tenía, por lo que tendremos que modificarlos para que se ejecute correctamente con el nuevo usuario.
Empezamos por cambiar el propietario de los archivos con estos comandos:
chown -R vichaunter.vichaunter /var/lib/transmission-daemon chown -R vichaunter.vichaunter /etc/transmission-daemon/settings.json chown -h vichaunter.vichaunter /var/lib/transmission-daemon/info/settings.json
Ahora que tenemos los usuarios correctos hay que cambiar el usuario de los archivos que tienes a medio descargar, para eso necesitas saber en qué carpeta se descargan, lo tienes en la configuración. Por ejemplo /media/torrent.
chown -R vichaunter.vichaunter /media/torrent/*
De esta forma cuando lo ejecutes continuará donde lo había dejado.
Solucionando algunos conflictos al ejecutar transmission
Puede que en algunos sistemas no llegue a ejecutarse tras estos pasos, indicando que no tiene permisos o permission denied. Para solucionarlo cambiaremos la restricción de los archivos a 777 según cual te de problemas. Lo normal es que sea la configuración:
chmod 777 /etc/transmission-daemon/settings.json chmod 777 /var/lib/transmission-daemon/info/settings.json
Recuerda que esto también dependerá de donde tengas los archivos instalados, por si no los encuentras puedes usar el comando updatedb y luego locate transmission.
Si eres usuario de Debian (o raspbian que viene a ser lo mismo), tendrás que editar también otro archivo con el mismo nombre que has puesto arriba:
nano /lib/systemd/system/transmission-daemon.service
Simplemente en la línea User=debian-transmission pones vichaunter y guardas y cierras el archivo. Por último, antes de ejecutar transmission de nuevo deberás lanzar este comando para recargar la configuración del daemon:
systemctl daemon-reload
Lo que hace es regenerar el archivo /lib/systemd/system/transmission-daemon.service con el nuevo usuario (que si lo cambias a mano también te dará error)
Por fín basta con volver a ejecutar transmission:
/etc/init.d/transmission-daemon start
No te debería dar ningún error, pero de hacerlo puedes dejarme un comentario y te echo una mano.
Como solucionar 403 forbidden en transmission
Si al tratar de ejecutar transmission no te arranca, prueba a hacerlo de la siguiente manera:
transmission-daemon -f
Verás que te aparece en pantalla lo que está pasando en transmission, y puede que te salga algo como esto:
[2017-02-15 17:16:26.426 CET] UDP Failed to set receive buffer: requested 4194304, got 327680 (tr-udp.c:78) [2017-02-15 17:16:26.426 CET] UDP Failed to set send buffer: requested 1048576, got 327680 (tr-udp.c:89)
Si es así, el problema está en el buffer de entrada-salida del UDP y tendrás que modificarlo. Simplemente edita el archivo sysctl.conf y añade un par de líneas al final:
nano /etc/sysctl.conf agrega esto net.core.rmem_max = 16777216 net.core.wmem_max = 4194304
Ahora falta que recargues las directivas con:
sysctl -p
Y al volver a ejecutar transmission-daemon ya verás que lo hace correctamente y puedes acceder vía web o con el GUI a través de la ip de tu servidor.
Igual te parece un tanto aparatoso todo el proceso, pero te puedo asegurar que son unas cuantas horas de investigación hasta dejarlo funcionando correctamente sin errores. No te quedes con dudas ante errores y comenta tu problema si no te funciona.
Como solucionar connection refused en transmission
A veces pasa que el proceso se bloquea o queda en defunct. Esto puede llevar a problemas de connection refused, pero no siempre es por el mismo motivo. Si te está pasando que tras configurarlo todo, de repente en algún momento te deja de ir, prueba con esto.
Elimina y vuelve a crear el archivo PID:
rm /var/lib/transmission-daemon/.config/transmission-daemon/trans.PID touch /var/lib/transmission-daemon/.config/transmission-daemon/trans.PID chown vichaunter.vichaunter /var/lib/transmission-daemon/.config/transmission-daemon/trans.PID
Recuerda usar el usuario de transmission en el chown. También puede deberse a alguna configuración modificada después de haber ejecutado el servicio, por lo que te ha empezado a rechazar una vez se reinicia.
Para asegurarte mira que la línea rpc-bind-address de todos los archivos de configuración estén como esta:
"rpc-bind-address": "0.0.0.0",
Si has puesto tu ip por error ahí también te va a rechazar.
¿Has tenido algún problema con el cambio de usuario? ¿Qué otro gestor de torrents usas? Deja tu comentario y comparte.