Come posso modificare l'utente La trasmissione viene eseguita in?


10

Ho installato Transmission tramite un PPA e il daemon si avvia all'avvio. Voglio cambiare l'utente che esegue il demone perché voglio che i file scaricati siano nello stesso utente della mia installazione XBMC e non riesco a trovare dove modificarlo.

Il demone usa upstart quindi non c'è nulla su quali utenti lo eseguono /etc/init.d/transmission-daemone non c'è nemmeno nulla /etc/default/transmission-daemonsu di lui

Sto usando questi ppas per la trasmissione:

/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

Potete per favore fornire il PPA e la versione di Ubuntu? Ovunque abbia guardato il pacchetto di trasmissione-daemon ha il file /etc/init.d/transmission-daemon.
organizzare il

Scusate se non sono stato chiaro, intendevo dire che non c'è nulla su quale utente esegue il demone in quel file
BvdBijl

All'inizio del file /etc/init.d/transmission-daemon dovresti vedere la riga "USER = debian-transmission"; quello dovrebbe essere.
organizzare il


Ho aggiunto quali PPA uso nel post iniziale
BvdBijl il

Risposte:



15

Poiché tutte le altre risposte sono per Ubuntu pre-systemd, ecco una guida aggiornata per Ubuntu 16.04 ( da sensecodons.com ). In sostanza, creare un'unità supplementare per "transmission-daemon.service" per modificare l' User=...impostazione e quindi aggiornare il file "~ / .config / transmission-daemon / settings.json" dell'utente.

Interrompere la trasmissione (se è già in esecuzione).

sudo systemctl stop transmission-daemon

Creare la directory del file del supplemento per la trasmissione:

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

Crea un nuovo file di supplemento chiamato "run-as-user.conf".

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

e inserisci il seguente testo.

[Service]
User=codon

Ovviamente, usa il tuo nome utente desiderato e non "codon".

Di 'a systemd di ricaricare le sue unità.

sudo systemctl daemon-reload

Successivamente, ti consigliamo di avviare e quindi interrompere la trasmissione per creare la ~/.config/transmission-daemon/directory per il tuo nuovo utente.

Avviare la trasmissione e quindi interrompere la trasmissione.

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

Ora dovresti avere la seguente directory nella home directory del tuo utente: .config/transmission-daemon/

Da qui, dovresti essere in grado di aggiornare ~/.config/transmission-daemon/settings.jsonnormalmente.

Al termine, avviare la trasmissione.

sudo systemctl start transmission-daemon

3
Invece di creare manualmente quella directory e quel file, usa systemctl edit transmission-daemon.service, che 1. creerà automaticamente quella directory e quel file, e 2. quando salvi ed esci, esegui systemctl daemon-reloadpure.
Muru,

7

ipotesi:

  • Hai usato questo PPA: ppa:transmissionbt/ppa
  • Si desidera eseguire la trasmissione con utente: some_usere gruppo:some_group

Per il sistema init System V (SysV) (ad es. Ubuntu 10.04 LTS):

  1. Ferma il demone trasmissione:

    sudo service transmission-daemon stop
    
  2. Modifica gli script init.d

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

    ... e cambia USER=debian-transmissioninUSER=some_user

Per il sistema di avvio Upstart (ad es. Ubuntu 14.04 LTS):

  1. Ferma il demone trasmissione:

    sudo service transmission-daemon stop
    
  2. Modifica gli script init:

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

    ... e modifica come segue:

    • cambia setuid debian-transmissioninsetuid some_user

    • e passare setgid debian-transmissionasetgid some_group

Per systemd init system (ad es. Ubuntu 16.04 LTS):

  1. Ferma il demone trasmissione:

    sudo systemctl stop transmission-daemon.service
    
  2. Crea il file systemd override.conf:

    sudo systemctl edit transmission-daemon.service
    

    ... e modifica come segue:

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

    Appunti:

    • Questo crea il seguente file: /etc/systemd/system/transmission-daemon.service.d/override.conf

    • Le assegnazioni di variabili vuote (ad es . User=:) vengono utilizzate per cancellare / ripristinare il valore nella variabile esistente. Questo sembra essere il modo in cui si fanno le cose quando si usa la sostituzione drop-in del file di unità di systemd. Vedere: "Esempio 2. Sostituzione delle impostazioni del fornitore" nel manuale systemd.unit :

      "... per i file drop-in, se si desidera rimuovere le voci da un'impostazione analizzata come elenco (e non è una dipendenza), ... è necessario prima cancellare l'elenco prima di aggiungere nuovamente tutte le voci tranne quello che deve essere rimosso ... "

  3. Systemd ricarica e avvia il demone di trasmissione:

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

    Nota: A differenza di Upstart e SysV, i sistemi di trasmissione-demone salvano tutte le configurazioni e le impostazioni /home/some_user/.config/transmission-daemon/invece di /etc/transmission-daemon/settings.jsone/var/lib/transmission-daemon

Note e riferimenti


Informazioni opzionali / aggiuntive relative alle autorizzazioni e agli aggiornamenti dei pacchetti:

Nota: quanto segue è probabilmente rilevante solo per i sistemi di avvio Upstart e SysV

Modifica delle autorizzazioni sui file di configurazione della trasmissione

Se non si utilizza systemd init system, potrebbe essere necessario modificare le autorizzazioni per i file di configurazione della trasmissione da user=debian-transmissiona user=some_usere da group=debian-transmissiona group=some_group.

  1. Controlla la posizione della directory di configurazione della trasmissione. Puoi trovarlo menzionato nel /etc/default/transmission-daemonfile come una riga in questo modo:

    CONFIG_DIR="/var/lib/transmission-daemon/info"
    
  2. Quindi supponendo che la directory di configurazione sia /var/lib/transmission-daemon/info, cambia la proprietà dei file di configurazione:

    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. Cambia la proprietà di altri file:

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

Informazioni extra (aggiornamento della trasmissione):

Poiché hai modificato l'utente predefinito, potresti scoprire che dopo l'aggiornamento di Transmission usando il repository (es. Apt-get upgrade) il demone di trasmissione non è più in esecuzione.

L'esecuzione di "sudo apt-get -f install" fornisce il seguente errore:

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)

Il motivo per cui il daemon non viene avviato ("invoke-rc.d: initscript transmission-daemon, azione" start "non riuscito.") È perché abbiamo modificato le autorizzazioni da "debian-transmission" a "some_user" e dopo l'aggiornamento sono state ripristinate . Quindi, per risolvere il problema, procedi come segue:

  1. Arresta Daemon e modifica il file di configurazione:

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

    ... e cambia USER=some_userinUSER=debian-transmission

  2. Riprova a correggere l'aggiornamento eseguendo:

    sudo apt-get -f install
    
  3. Se l'aggiornamento ha esito positivo, il daemon di trasmissione ora dovrebbe essere in esecuzione. Ora puoi seguire i passaggi precedenti per cambiare nuovamente utente / gruppo.


6

Questa non è la storia completa. Oltre a cambiare

setgid <groupname>

e

setuid <username>

in

/etc/init/transmission-daemon.conf

è inoltre necessario modificare le autorizzazioni del file di configurazione di transmission-daemon. Altrimenti non sarà in grado di riscrivere le impostazioni in questo file e il demone si riavvierà fino a quando upstart pensa di avere abbastanza possibilità (init: trasmissione-demone che respawn troppo velocemente, fermo)

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

Grazie per la modifica del permesso di settings.json. Perso quello.
nighthawk454

2

Sui sistemi che utilizzano systemd, il file che si desidera modificare potrebbe effettivamente essere:

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

Modifica successiva con:

sudo systemctl daemon-reload


Questo è ciò che mi ha aiutato. Ho fatto tutti gli altri passaggi ma non ha funzionato. Grazie!
Martijn Smidt,

2

In Ubuntu 16.04 il servizio di avvio è stato modificato da start-up a systemd, rendendo obsolete le risposte precedenti. Per modificare le esecuzioni di trasmissione-demone utente eseguire:

Ferma il demone:

sudo service transmission-daemon stop

Cambia la proprietà dei file di configurazione e "home":

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

Quindi modifica il file /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

Nota User, --config-dire le --log-debugmodifiche.

Ricarica la configurazione del sistema:

sudo systemctl daemon-reload

Avvia di nuovo il demone:

sudo service transmission-daemon start

Dopo aver impostato l' --log-debugopzione (che ti darà maggiori informazioni su qualsiasi problema) puoi ottenere il registro del demone:

sudo journalctl -u transmission-daemon.service

Fatto.

Cose da notare:

Puoi ignorare i file:

/etc/default/transmission-daemon: Sembra che nessuno lo stia cercando nei sistemi systemd.

/etc/init.d/transmission-daemon: Sembra che questo fosse il vecchio script di avvio del sistema 5.

/etc/init/transmission-daemon.conf: Sembra che questo sia il vecchio script di avvio iniziale.


2
Non modificare /lib/systemd/system/transmission-daemon.servicemanualmente. Usa systemctl edit transmission-daemon.serviceinvece, altrimenti le tue modifiche andranno perse quando aggiorni il pacchetto.
Muru,

0

Ho fatto quanto segue, che a me sembra meno invasivo rispetto alle altre risposte.

  1. Rimuovere l'avvio del daemon di trasmissione:

    sudo update-rc.d -f transmission-daemon remove
    
  2. Aggiungi quanto segue a /etc/profile:

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

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

Questo è un po 'più portatile, forse funziona anche su Debian e Minibian.


non è una cattiva idea ma richiede che l'utente acceda con una shell che viene eseguita /etc/profile(zsh non la esegue, per esempio)
elboletaire,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.