Como faço para alterar o usuário Transmissão é executado sob?

7

Eu instalei a transmissão através de um PPA e o daemon inicia na inicialização. Eu quero mudar o usuário que executa o daemon porque eu quero que os arquivos baixados estejam sob o mesmo usuário da minha instalação do XBMC, e não consigo encontrar onde editar isso.

O daemon usa upstart, então não há nada sobre quais usuários o executam em /etc/init.d/transmission-daemon e não há nada em /etc/default/transmission-daemon sobre o usuário

Estou usando esses ppas para transmissão:

/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
    
por BvdBijl 25.02.2013 / 22:17

7 respostas

3

A partir da versão v1.4, setuid e setgid são suportados nativamente no arquivo de configuração:

setgid <groupname>

e

setuid <username>

Antes da v1.4 você pode usar isto ( como descrito aqui ):

exec start-stop-daemon --start -c {user} --exec {command}
    
por Rinzwind 25.02.2013 / 22:51
7

Como todas as outras respostas são para o Ubuntu pre-systemd, aqui está um guia atualizado para o Ubuntu 16.04 ( de sensecodons.com ). Essencialmente, crie uma unidade suplementar para "transmission-daemon.service" para alterar a configuração User=... e, em seguida, atualize o arquivo "~ / .config / transmission-daemon / settings.json" desse usuário.

  

Pare a transmissão (se já estiver em execução).

sudo systemctl stop transmission-daemon
     

Crie o diretório do arquivo suplementar para transmissão:

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

Crie um novo arquivo suplementar chamado "run-as-user.conf".

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

e coloque o seguinte texto nele.

[Service]
User=codon
     

Obviamente, use seu nome de usuário desejado e não "códon".

     

Diga ao systemd para recarregar suas unidades.

sudo systemctl daemon-reload

Em seguida, você desejará iniciar e interromper a transmissão para criar o diretório ~/.config/transmission-daemon/ para seu novo usuário.

  

Inicie a transmissão e depois interrompa a transmissão.

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

Agora você deve ter o seguinte diretório no diretório inicial do usuário:    .config/transmission-daemon/

A partir daqui, você deve poder atualizar ~/.config/transmission-daemon/settings.json normalmente.

Quando terminar, inicie a transmissão.

sudo systemctl start transmission-daemon
    
por Douglas Manley 09.01.2017 / 02:21
6

Esta não é a história completa. Além de mudar

setgid <groupname>

e

setuid <username>

em

/etc/init/transmission-daemon.conf

você também precisa alterar as permissões do arquivo de configuração do daemon de transmissão. Caso contrário, não será capaz de reescrever as configurações para este arquivo e o daemon reiniciará até que o upstart ache que tem chances suficientes (init: transmission-daemon reaparecendo muito rápido, parou)

sudo chown <user>:<group> /etc/transmission-daemon/settings.json
sudo chown -R <user>:<group> /var/lib/transmission-daemon/ 
    
por mrClass 14.07.2013 / 10:25
4

Suposições:

  • Você usou este PPA: ppa:transmissionbt/ppa
  • Você deseja executar a Transmissão com o usuário: some_user e group: some_group

Para o sistema init do System V (SysV) (por exemplo: Ubuntu 10.04 LTS):

  1. Pare o daemon de transmissão:

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

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

    ... e altere USER=debian-transmission para USER=some_user

Para o sistema init do Upstart (por exemplo: Ubuntu 14.04 LTS):

  1. Pare o daemon de transmissão:

    sudo service transmission-daemon stop
    
  2. Edite os scripts de inicialização:

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

    ... e edite da seguinte forma:

    • altere setuid debian-transmission para setuid some_user

    • e altere setgid debian-transmission para setgid some_group

Para o sistema init systemd (por exemplo: Ubuntu 16.04 LTS):

  1. Pare o daemon de transmissão:

    sudo systemctl stop transmission-daemon.service
    
  2. Crie o arquivo systemd override.conf:

    sudo systemctl edit transmission-daemon.service
    

    ... e edite da seguinte forma:

    [Service]
    User=nas_user
    

    Observação: isso cria o seguinte arquivo: /etc/systemd/system/transmission-daemon.service.d/override.conf

  3. Systemd recarrega e inicia o daemon de transmissão:

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

    Observação: Diferentemente dos sistemas init do Upstart e do SysV, o daemon de transmissão salva todas as configurações e configurações em /home/some_user/.config/transmission-daemon/ em vez de /etc/transmission-daemon/settings.json e /var/lib/transmission-daemon

Notas e amp; Referências

Informações adicionais sobre permissões e atualizações de pacotes:

Nota: O seguinte é provavelmente relevante apenas para sistemas init Upstart e SysV apenas

Alterando permissões nos arquivos de configuração da Transmissão

Se você não estiver usando o sistema init do systemd, talvez seja necessário alterar as permissões dos arquivos de configuração da Transmissão de user=debian-transmission para user=some_user e de group=debian-transmission para group=some_group .

  1. Verifique a localização do seu diretório de configuração de transmissão. Você pode encontrá-lo mencionado no arquivo /etc/default/transmission-daemon como uma linha como esta:

    CONFIG_DIR="/var/lib/transmission-daemon/info"
    
  2. Portanto, supondo que seu Diretório de configuração seja /var/lib/transmission-daemon/info , altere a propriedade dos arquivos de configuração:

    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. Altere a propriedade de outros arquivos:

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

Informações extras (atualização da transmissão):

Como você alterou o usuário padrão, você pode descobrir que depois de atualizar o Transmission usando o repositório (por exemplo: apt-get upgrade), o daemon de transmissão não está mais em execução.

Rodando "sudo apt-get -f install", indique o seguinte erro:

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)

A razão pela qual o daemon falha ao iniciar ("invoke-rc.d: initscript transmission-daemon, a ação" start "falhou.") é porque alteramos as permissões de "debian-transmission" para "some_user" e após a atualização estes foram redefinidos. Então para corrigir basta fazer o seguinte:

  1. Pare o daemon e edite o arquivo de configuração:

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

    ... e altere USER=some_user para USER=debian-transmission

  2. Tente novamente corrigir a atualização executando:

    sudo apt-get -f install
    
  3. Se a atualização for bem-sucedida, o daemon de transmissão deverá estar em execução. Agora você pode seguir as etapas acima para alterar o usuário / grupo novamente.

por moo 31.10.2014 / 21:29
2

Em sistemas que usam o systemd, o arquivo que você deseja editar pode, na verdade, ser:

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

Acompanhar a edição com:

sudo systemctl daemon-reload

    
por Epskampie 12.09.2015 / 17:15
1

No Ubuntu 16.04, o serviço de inicialização foi alterado de upstart para systemd, tornando obsoleta a necessidade das respostas anteriores. Para alterar as execuções do daemon de transmissão do usuário, execute:

Parar daemon:

sudo service transmission-daemon stop

Altere a propriedade dos arquivos de configuração e "home":

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

Em seguida, edite o arquivo /lib/systemd/system/transmission-daemon.service com:

[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

Tenha em atenção as alterações User , --config-dir e --log-debug .

Recarregar a configuração do sistema:

sudo systemctl daemon-reload

Inicie o daemon novamente:

sudo service transmission-daemon start

Depois de definir a opção --log-debug (que lhe dará mais informações sobre qualquer problema), você pode obter o log do daemon:

sudo journalctl -u transmission-daemon.service

Feito.

Coisas a serem observadas:

Você pode ignorar arquivos:

/etc/default/transmission-daemon : Parece que ninguém está pesquisando em sistemas systemd.

/etc/init.d/transmission-daemon : parece que este foi o script de início do sistema 5 antigo.

/etc/init/transmission-daemon.conf : parece que este é o antigo script de início de arranque.

    
por Carolina Aguilar 17.12.2016 / 03:28
0

Eu fiz o seguinte, o que para mim parece menos invasivo do que as outras respostas.

  1. Remova a inicialização do daemon de transmissão:

    sudo update-rc.d -f transmission-daemon remove
    
  2. Adicione o seguinte a /etc/profile :

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

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

Este é um pouco mais portátil, talvez, funciona para mim também em Debian e no minibiano.

    
por nicholas.alipaz 15.05.2015 / 23:15