Como altero o usuário em que a transmissão é executada?

10

Instalei o Transmission através de um PPA e o daemon inicia na inicialização. Quero alterar o usuário que executa o daemon porque quero que os arquivos baixados tenham o mesmo usuário da minha instalação do XBMC e não consigo encontrar onde editá-lo.

O daemon usa upstart, portanto não há nada sobre quais usuários o executam /etc/init.d/transmission-daemone também não há nada /etc/default/transmission-daemonsobre 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
BvdBijl
fonte
Você pode fornecer o PPA e a versão do Ubuntu? Em todo lugar que olhei, o pacote daemon de transmissão possui o arquivo /etc/init.d/transmission-daemon.
organize
Desculpe se eu não estava claro, eu quis dizer que não há nada sobre o usuário que executa o daemon nesse arquivo
BvdBijl
No início do arquivo /etc/init.d/transmission-daemon, você deverá ver a linha "USER = debian-transmission"; deve ser isso.
organize
Eu adicionei quais PPAs eu uso no post inicial
BvdBijl 25/02

Respostas:

4

A partir da versão inicial do v1.4, setuide setgidsão suportados nativamente no arquivo de configuração:

setgid <groupname>

e

setuid <username>

Antes da v1.4, você pode usar isso ( conforme descrito aqui ):

exec start-stop-daemon --start -c {user} --exec {command}
Rinzwind
fonte
2
Eu tenho que editar o /etc/init/transmission-daemon.conf
BvdBijl
11
Eu tinha também para sudo chown -R usuário: grupo / var / lib / transmissão-daemon / como disse askubuntu.com/questions/290943/...
Philippe Gachoud
15

Como todas as outras respostas são para o pré-systemd do Ubuntu, aqui está um guia atualizado para o Ubuntu 16.04 ( de sensecodons.com ). Essencialmente, crie uma unidade suplementar para "conversion-daemon.service" para alterar a User=...configuração e 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 de arquivos suplementares para transmissão:

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

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

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

e coloque o texto a seguir.

[Service]
User=codon

Obviamente, use o nome de usuário desejado e não "codon".

Diga ao systemd para recarregar suas unidades.

sudo systemctl daemon-reload

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

Inicie a transmissão e depois pare 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.jsonnormalmente.

Quando terminar, inicie a transmissão.

sudo systemctl start transmission-daemon
Douglas Manley
fonte
3
Em vez de criar manualmente esse diretório e arquivo, use systemctl edit transmission-daemon.service1. que criará automaticamente esse diretório e arquivo e 2. quando você salvar e sair, execute systemctl daemon-reloadtambém.
Muru
7

Premissas:

  • Você usou este PPA: ppa:transmissionbt/ppa
  • Você deseja executar a transmissão com user: some_usere 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 mude USER=debian-transmissionparaUSER=some_user

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

  1. Pare o daemon de transmissão:

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

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

    ... e edite da seguinte maneira:

    • mude setuid debian-transmissionparasetuid some_user

    • e mude setgid debian-transmissionparasetgid some_group

Para systemd init system (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 maneira:

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

    Notas:

    • Isso cria o seguinte arquivo: /etc/systemd/system/transmission-daemon.service.d/override.conf

    • As atribuições de variáveis ​​vazias (por exemplo User=:) são usadas para limpar / redefinir o valor na variável existente. Parece ser assim que as coisas são feitas ao usar a substituição do arquivo da unidade systemd. Consulte: "Exemplo 2. Substituindo configurações do fornecedor" no manual systemd.unit :

      "... para arquivos drop-in, se alguém deseja remover entradas de uma configuração que é analisada como uma lista (e não é uma dependência), ... é necessário primeiro limpar a lista antes de adicionar novamente todas as entradas, exceto aquele que deve ser removido ... "

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

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

    Nota: Ao contrário dos sistemas init Upstart e SysV, o transmission-daemon salva todas as configurações e configurações em /home/some_user/.config/transmission-daemon/vez de /etc/transmission-daemon/settings.jsone/var/lib/transmission-daemon

Notas e referências


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

Nota: Provavelmente, o que se segue é relevante apenas para os sistemas init Upstart e SysV

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

Se você não estiver usando sistema de inicialização systemd agora você pode precisar alterar as permissões para os arquivos de configuração de transmissão a partir user=debian-transmissionde user=some_usere para group=debian-transmissiona group=some_group.

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

    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. Alterar 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 adicionais (atualização da transmissão):

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

A execução de "sudo apt-get -f install" fornece 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)

O motivo pelo qual o daemon falha ao iniciar ("invoke-rc.d: daemon de transmissão initscript, ação" start "falhou.") É porque alteramos as permissões de "debian-transmission" para "some_user" e, após a atualização, elas foram redefinidas . Então, para corrigir, faça 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 mude USER=some_userparaUSER=debian-transmission

  2. Tente corrigir a atualização executando:

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

moo
fonte
6

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

setgid <groupname>

e

setuid <username>

no

/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, ele não poderá reescrever as configurações deste arquivo e o daemon será reiniciado até que o iniciante pense que teve chances suficientes (init: daemon de transmissão reaparecendo muito rápido, parado)

sudo chown <user>:<group> /etc/transmission-daemon/settings.json
sudo chown -R <user>:<group> /var/lib/transmission-daemon/ 
mrClass
fonte
Obrigado por um pouco sobre como alterar as permissões de settings.json. Perdeu isso.
precisa
2

Nos sistemas que usam systemd, o arquivo que você deseja editar pode ser:

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

Acompanhe a edição com:

sudo systemctl daemon-reload

Epskampie
fonte
Foi isso que me ajudou. Eu fiz todas as outras etapas, mas não funcionou. Obrigado!
Martijn Smidt
2

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

Pare 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.servicecom:

[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

Por favor, note o User, --config-dire as --log-debugmudanças.

Recarregar a configuração do systemd:

sudo systemctl daemon-reload

Inicie o daemon novamente:

sudo service transmission-daemon start

Depois de definir a opção --log-debug(que fornecerá mais informações sobre qualquer problema), você poderá 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 o está fornecendo nos sistemas systemd.

/etc/init.d/transmission-daemon: Parece que este era o antigo script de inicialização do sistema 5.

/etc/init/transmission-daemon.conf: Parece que esse é o antigo script de inicialização inicial.

Carolina Aguilar
fonte
2
Não edite /lib/systemd/system/transmission-daemon.servicemanualmente. Use em systemctl edit transmission-daemon.servicevez disso, ou suas alterações serão perdidas quando você atualizar o pacote.
Muru
0

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. Criar ~/.autostart:

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

Isso é um pouco mais portátil, talvez, também funcione para mim no Debian e no minibian.

nicholas.alipaz
fonte
não é uma má idéia, mas ele exige que os logins de usuários com um shell que executa /etc/profile(zsh não executá-lo, por exemplo)
elboletaire