¿Cómo cambio el usuario con el que se ejecuta la transmisión?


10

Instalé Transmisión a través de un PPA y el demonio comienza en el arranque. Quiero cambiar el usuario que ejecuta el daemon porque quiero que los archivos descargados estén bajo el mismo usuario que mi instalación de XBMC, y parece que no puedo encontrar dónde editar eso.

El daemon usa el sistema de arranque, por lo que no hay nada sobre qué usuarios lo ejecutan /etc/init.d/transmission-daemony tampoco hay nada /etc/default/transmission-daemonsobre el usuario

Estoy usando estos ppas para la transmisión:

/etc/apt/sources.list.d/transmissionbt-ppa-quantal.list:deb //ppa.launchpad.net/transmissionbt/ppa/ubuntu quantal main

/etc/apt/sources.list.d/transmissionbt-ppa-quantal.list:deb-src //ppa.launchpad.net/transmissionbt/ppa/ubuntu quantal main

/etc/apt/sources.list.d/transmissionbt-ppa-quantal.list.save:deb //ppa.launchpad.net/transmissionbt/ppa/ubuntu quantal main

/etc/apt/sources.list.d/transmissionbt-ppa-quantal.list.save:deb-src //ppa.launchpad.net/transmissionbt/ppa/ubuntu quantal main

¿Pueden proporcionar el PPA y la versión de Ubuntu? En todas partes miré el paquete de transmisión-demonio tiene el archivo /etc/init.d/transmission-daemon.
organizar

Lo siento si no estaba claro, quise decir que no hay nada sobre qué usuario ejecuta el demonio en ese archivo
BvdBijl

Al comienzo del archivo /etc/init.d/transmission-daemon, debería ver la línea "USER = debian-transmission"; eso debería ser.
organizar


Respuestas:


4

A partir de la versión inicial 1.4, setuidy setgidson compatibles de forma nativa en el archivo de configuración:

setgid <groupname>

y

setuid <username>

Antes de la v1.4 puede usar esto ( como se describe aquí ):

exec start-stop-daemon --start -c {user} --exec {command}

2
Tengo que editar /etc/init/transmission-daemon.conf
BvdBijl

1
También tuve que sudo chown -R user: group / var / lib / transmission-daemon / like dijo askubuntu.com/questions/290943/…
Philippe Gachoud

15

Como todas las otras respuestas son para Ubuntu pre-systemd, aquí hay una guía actualizada para Ubuntu 16.04 ( de sensecodons.com ). Básicamente, cree una unidad suplementaria para "transmission-daemon.service" para cambiar la User=...configuración y luego actualice el archivo "~ / .config / transmission-daemon / settings.json" de ese usuario.

Detener la transmisión (si ya se está ejecutando).

sudo systemctl stop transmission-daemon

Cree el directorio de archivos complementarios para la transmisión:

sudo mkdir -p /etc/systemd/system/transmission-daemon.service.d

Cree un nuevo archivo de suplemento llamado "run-as-user.conf".

sudo vi /etc/systemd/system/transmission-daemon.service.d/run-as-user.conf

y pon el siguiente texto en él.

[Service]
User=codon

Obviamente, use su nombre de usuario deseado y no "codon".

Dile a systemd que recargue sus unidades.

sudo systemctl daemon-reload

A continuación, querrá comenzar y luego detener la transmisión para que cree el ~/.config/transmission-daemon/directorio para su nuevo usuario.

Inicie la transmisión y luego pare la transmisión.

sudo systemctl start transmission-daemon; sudo systemctl stop transmission-daemon

Ahora debe tener el siguiente directorio en el directorio de inicio de su usuario: .config/transmission-daemon/

Desde aquí, deberías poder actualizar ~/.config/transmission-daemon/settings.jsonnormalmente.

Cuando termines, comienza la transmisión.

sudo systemctl start transmission-daemon

3
En lugar de crear manualmente ese directorio y archivo, use systemctl edit transmission-daemon.service, que automáticamente 1. creará ese directorio y archivo, y 2. cuando guarde y salga, ejecute systemctl daemon-reloadtambién.
Muru

7

Suposiciones

  • Usaste este PPA: ppa:transmissionbt/ppa
  • Desea ejecutar la transmisión con el usuario some_usery el grupo:some_group

Para el sistema init System V (SysV) (por ejemplo: Ubuntu 10.04 LTS):

  1. Detener el demonio de transmisión:

    sudo service transmission-daemon stop
    
  2. Edite los scripts init.d

    sudo nano /etc/init.d/transmission-daemon
    

    ... y cambiar USER=debian-transmissionaUSER=some_user

Para el sistema de inicio Upstart (por ejemplo: Ubuntu 14.04 LTS):

  1. Detener el demonio de transmisión:

    sudo service transmission-daemon stop
    
  2. Edite los guiones de inicio:

    sudo nano /etc/init/transmission-daemon.conf
    

    ... y edite de la siguiente manera:

    • cambiar setuid debian-transmissionasetuid some_user

    • y cambiar setgid debian-transmissionasetgid some_group

Para el sistema systemd init (por ejemplo: Ubuntu 16.04 LTS):

  1. Detener el demonio de transmisión:

    sudo systemctl stop transmission-daemon.service
    
  2. Cree el archivo systemd override.conf:

    sudo systemctl edit transmission-daemon.service
    

    ... y edite de la siguiente manera:

    [Service]
    User=
    User=some_user
    Group=
    Group=some_group
    

    Notas:

    • Esto crea el siguiente archivo: /etc/systemd/system/transmission-daemon.service.d/override.conf

    • Las asignaciones de variables vacías (por ejemplo:) User=se utilizan para borrar / restablecer el valor en la variable existente. Esto parece ser cómo se hacen las cosas cuando se usa el reemplazo directo del archivo de unidad systemd. Consulte: "Ejemplo 2. Anulación de la configuración del proveedor" en systemd.unit manual :

      "... para archivos desplegables, si uno desea eliminar entradas de una configuración que se analiza como una lista (y no es una dependencia), ... primero debe borrar la lista antes de volver a agregar todas las entradas excepto el que se va a quitar ... "

  3. Systemd recarga e inicia el demonio de transmisión:

    sudo systemctl daemon-reload
    sudo systemctl start transmission-daemon.service
    

    Nota: a diferencia de los sistemas de inicio Upstart y SysV, el demonio de transmisión guarda toda la configuración y la configuración en /home/some_user/.config/transmission-daemon/lugar de /etc/transmission-daemon/settings.jsony/var/lib/transmission-daemon

Notas y referencias


Información opcional / adicional sobre permisos y actualizaciones de paquetes:

Nota: Lo siguiente probablemente solo sea relevante para los sistemas de inicio Upstart y SysV

Cambio de permisos en los archivos de configuración de transmisión

Si no está utilizando el sistema init systemd que ahora puede que tenga que cambiar los permisos para los archivos de configuración de transmisión de user=debian-transmissional user=some_usery desde group=debian-transmissiona group=some_group.

  1. Verifique la ubicación de su Directorio de configuración de transmisión. Puede encontrarlo mencionado en el /etc/default/transmission-daemonarchivo como una línea así:

    CONFIG_DIR="/var/lib/transmission-daemon/info"
    
  2. Asumiendo que su directorio de configuración es /var/lib/transmission-daemon/info, cambie la propiedad de los archivos de configuración:

    sudo chown some_user:some_group /var/lib/transmission-daemon/downloads
    sudo chown some_user:some_group /var/lib/transmission-daemon/info
    sudo chown some_user:some_group /var/lib/transmission-daemon/info/blocklists
    sudo chown some_user:some_group /var/lib/transmission-daemon/info/dht.dat
    sudo chown some_user:some_group /var/lib/transmission-daemon/info/resume
    sudo chown some_user:some_group /var/lib/transmission-daemon/info/torrents
    
  3. Cambiar la propiedad de otros archivos:

    sudo chown :some_group /etc/transmission-daemon
    sudo chown some_user:some_group /etc/transmission-daemon/settings.json
    

Información adicional (actualización de transmisión):

Debido a que cambió el usuario predeterminado, puede encontrar que después de actualizar la transmisión utilizando el repositorio (por ejemplo: apt-get upgrade), el demonio de transmisión ya no se está ejecutando.

Ejecutar "sudo apt-get -f install" da el siguiente error:

Reading package lists... Done
Building dependency tree
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 5 not upgraded.
1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Setting up transmission-daemon (2.84-0ubuntu0.12.04.1) ...
 * Starting bittorrent daemon transmission-daemon
invoke-rc.d: initscript transmission-daemon, action "start" failed.
dpkg: error processing transmission-daemon (--configure):
 subprocess installed post-installation script returned error exit status 255
Errors were encountered while processing:
 transmission-daemon
E: Sub-process /usr/bin/dpkg returned an error code (1)

La razón por la cual el demonio no se inicia ("invoke-rc.d: initscript transmission-daemon, action" start "failure.") Es porque cambiamos los permisos de "debian-transmission" a "some_user" y después de la actualización, estos se restablecieron . Entonces, para solucionarlo, haga lo siguiente:

  1. Detenga Daemon y edite el archivo de configuración:

    sudo service transmission-daemon stop
    sudo nano /etc/init.d/transmission-daemon
    

    ... y cambiar USER=some_useraUSER=debian-transmission

  2. Vuelva a intentar arreglar la actualización ejecutando:

    sudo apt-get -f install
    
  3. Si la actualización se realiza correctamente, el demonio de transmisión ahora debería estar ejecutándose. Ahora puede seguir los pasos anteriores para cambiar de nuevo usuario / grupo.


6

Esta no es la historia completa. Aparte de cambiar

setgid <groupname>

y

setuid <username>

en

/etc/init/transmission-daemon.conf

También debe cambiar los permisos del archivo de configuración de Transmission-Daemon. De lo contrario, no podrá volver a escribir la configuración en este archivo y el demonio se reiniciará hasta que el advenedizo piense que tiene suficientes posibilidades (init: la transmisión-demonio reaparece demasiado rápido, se detiene)

sudo chown <user>:<group> /etc/transmission-daemon/settings.json
sudo chown -R <user>:<group> /var/lib/transmission-daemon/ 

Gracias por un poco sobre cambiar los permisos de settings.json. Me perdí eso.
nighthawk454

2

En los sistemas que usan systemd, el archivo que desea editar puede ser:

/etc/systemd/system/multi-user.target.wants/transmission-daemon.service

Edición de seguimiento con:

sudo systemctl daemon-reload


Esto es lo que me ayudó. Hice todos los demás pasos pero no funcionó. ¡Gracias!
Martijn Smidt

2

En Ubuntu 16.04, el servicio de inicio se cambió de upstart a systemd, lo que dejó obsoletas las respuestas anteriores. Para cambiar las ejecuciones de demonio de transmisión del usuario, ejecute:

Deja de demonio:

sudo service transmission-daemon stop

Cambiar la propiedad de los archivos de configuración y "inicio":

sudo chown -R USER:USER /var/lib/transmission-daemon/*
sudo chown -R USER:USER /etc/transmission-daemon/settings.json

Luego edite el archivo /lib/systemd/system/transmission-daemon.servicecon:

[Unit]
Description=Transmission BitTorrent Daemon
After=network.target

[Service]
User=USER
Type=notify
ExecStart=/usr/bin/transmission-daemon -f --log-debug --config-dir /var/lib/transmission-daemon/info
ExecReload=/bin/kill -s HUP $MAINPID

[Install]
WantedBy=multi-user.target

Tenga en cuenta el User,--config-dir y los --log-debugcambios.

Recargar la configuración de systemd:

sudo systemctl daemon-reload

Inicia el demonio nuevamente:

sudo service transmission-daemon start

Una vez que haya configurado la --log-debugopción (que le dará más información sobre cualquier problema), puede obtener el registro del demonio:

sudo journalctl -u transmission-daemon.service

Hecho.

Cosas a tener en cuenta:

Puedes ignorar los archivos:

/etc/default/transmission-daemon: Parece que nadie lo está buscando en sistemas systemd.

/etc/init.d/transmission-daemon: Parece que este era el antiguo script de inicio del sistema 5.

/etc/init/transmission-daemon.conf: Parece que este es el antiguo script de inicio de arranque.


2
No edite /lib/systemd/system/transmission-daemon.servicemanualmente. Use systemctl edit transmission-daemon.serviceen su lugar, o sus cambios se perderán cuando actualice el paquete.
Muru

0

Hice lo siguiente, que me parece menos invasivo que las otras respuestas.

  1. Elimina el inicio de transmisión-daemon:

    sudo update-rc.d -f transmission-daemon remove
    
  2. Agregue lo siguiente a /etc/profile:

    if [ -f "$HOME/.autostart" ]; then
      $HOME/.autostart
    fi
    
  3. Crear ~/.autostart:

    #!/bin/bash
    if [ -z "$(pidof transmission-daemon)" ]; then
     /usr/bin/transmission-daemon --config-dir /home/[USERNAME]/.config/transmission-daemon &
    fi
    

Esto es un poco más portátil quizás, también funciona para mí en Debian y minibian.


no es una mala idea, pero requiere que el usuario inicie sesión con un shell que se ejecuta /etc/profile(zsh no lo ejecuta, por ejemplo)
elboletaire
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.