Wie ändere ich den Benutzer, unter dem die Übertragung ausgeführt wird?

10

Ich habe Transmission über eine PPA installiert und der Daemon startet beim Booten. Ich möchte den Benutzer ändern, der den Dämon ausführt, da die heruntergeladenen Dateien unter demselben Benutzer wie meine XBMC-Installation sein sollen, und ich kann anscheinend nicht finden, wo ich das bearbeiten kann.

Der Daemon verwendet upstart, sodass nichts darüber bekannt ist, in welchen Benutzern er ausgeführt wird, /etc/init.d/transmission-daemonund auch nichts /etc/default/transmission-daemonüber den Benutzer

Ich verwende diese ppas für die Übertragung:

/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
quelle
Können Sie bitte die PPA und die Version von Ubuntu bereitstellen? Überall, wo ich nachgesehen habe, enthält das Transmission-Daemon-Paket die Datei /etc/init.d/transmission-daemon.
arrangieren Sie den
Entschuldigung, wenn ich nicht klar war, ich meinte, dass es nichts darüber gibt, welcher Benutzer den Dämon in dieser Datei
ausführt
Am Anfang der Datei /etc/init.d/transmission-daemon sollte die Zeile "USER = debian-Transmission" angezeigt werden. das sollte es sein.
arrangieren Sie den
Ich habe hinzugefügt, welche PPAs ich im
Startbeitrag verwende

Antworten:

4

Ab Upstart v1.4 setuidund setgidwerden nativ in der Konfigurationsdatei unterstützt:

setgid <groupname>

und

setuid <username>

Vor v1.4 können Sie dies verwenden ( wie hier beschrieben ):

exec start-stop-daemon --start -c {user} --exec {command}
Rinzwind
quelle
2
Ich muss /etc/init/transmission-daemon.conf
BvdBijl
1
Ich musste auch sudo chown -R Benutzer: Gruppe / var / lib / Transmission-Daemon / wie gesagt askubuntu.com/questions/290943/…
Philippe Gachoud
15

Da alle anderen Antworten für Ubuntu pre-systemd gelten, finden Sie hier eine aktualisierte Anleitung für Ubuntu 16.04 ( von sensecodons.com ). Erstellen Sie im Wesentlichen eine zusätzliche Einheit für "Transmission-Daemon.service", um die User=...Einstellung zu ändern , und aktualisieren Sie dann die Datei "~ / .config / Transmission-Daemon / settings.json" des Benutzers.

Stoppen Sie die Übertragung (falls sie bereits läuft).

sudo systemctl stop transmission-daemon

Erstellen Sie das Ergänzungsdateiverzeichnis für die Übertragung:

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

Erstellen Sie eine neue Ergänzungsdatei mit dem Namen "run-as-user.conf".

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

und fügen Sie den folgenden Text ein.

[Service]
User=codon

Verwenden Sie natürlich Ihren gewünschten Benutzernamen und nicht "Codon".

Weisen Sie systemd an, seine Einheiten neu zu laden.

sudo systemctl daemon-reload

Als Nächstes möchten Sie die Übertragung starten und dann stoppen, damit das ~/.config/transmission-daemon/Verzeichnis für Ihren neuen Benutzer erstellt wird.

Starten Sie die Übertragung und stoppen Sie dann die Übertragung.

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

Sie sollten jetzt das folgende Verzeichnis im Home-Verzeichnis Ihres Benutzers haben: .config/transmission-daemon/

Von hier aus sollten Sie in der Lage sein, ~/.config/transmission-daemon/settings.jsonnormal zu aktualisieren .

Wenn Sie fertig sind, starten Sie die Übertragung.

sudo systemctl start transmission-daemon
Douglas Manley
quelle
3
Anstatt dieses Verzeichnis und diese Datei manuell zu erstellen, verwenden Sie systemctl edit transmission-daemon.service, wodurch automatisch 1. dieses Verzeichnis und diese Datei erstellt und 2. beim Speichern und Beenden ebenfalls ausgeführt wird systemctl daemon-reload.
Muru
7

Annahmen:

  • Sie haben diese PPA verwendet: ppa:transmissionbt/ppa
  • Sie möchten die Übertragung mit Benutzer: some_userund Gruppe ausführen :some_group

Für System V (SysV) -Init-System (z. B. Ubuntu 10.04 LTS):

  1. Stoppen Sie den Übertragungsdämon:

    sudo service transmission-daemon stop
    
  2. Bearbeiten Sie die Skripte init.d

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

    ... und wechseln USER=debian-transmissionzuUSER=some_user

Für Upstart-Init-System (zB: Ubuntu 14.04 LTS):

  1. Stoppen Sie den Übertragungsdämon:

    sudo service transmission-daemon stop
    
  2. Bearbeiten Sie die Init-Skripte:

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

    ... und wie folgt bearbeiten:

    • wechseln setuid debian-transmissionzusetuid some_user

    • und wechseln setgid debian-transmissionzusetgid some_group

Für systemd init system (zB: Ubuntu 16.04 LTS):

  1. Stoppen Sie den Übertragungsdämon:

    sudo systemctl stop transmission-daemon.service
    
  2. Erstellen Sie die Datei systemd override.conf:

    sudo systemctl edit transmission-daemon.service
    

    ... und wie folgt bearbeiten:

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

    Anmerkungen:

    • Dadurch wird die folgende Datei erstellt: /etc/systemd/system/transmission-daemon.service.d/override.conf

    • Die leeren Variablenzuweisungen (zB :) User=werden verwendet, um den Wert in der vorhandenen Variablen zu löschen / zurückzusetzen. Dies scheint der Fall zu sein, wenn die systemd-Einheitendatei durch Drop-In ersetzt wird. Siehe: "Beispiel 2. Überschreiben der Herstellereinstellungen" im Handbuch systemd.unit :

      "... Wenn Sie für Drop-In-Dateien Einträge aus einer Einstellung entfernen möchten, die als Liste analysiert wird (und keine Abhängigkeit darstellt), ... müssen Sie zuerst die Liste löschen, bevor Sie alle Einträge außer erneut hinzufügen derjenige, der entfernt werden soll ... "

  3. Systemd lädt den Übertragungsdämon neu und startet ihn:

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

    Hinweis: Im Gegensatz zu Upstart- und SysV-Init-Systemen speichert der Transmission-Daemon alle Konfigurationen und Einstellungen /home/some_user/.config/transmission-daemon/anstelle von /etc/transmission-daemon/settings.jsonund/var/lib/transmission-daemon

Anmerkungen & Referenzen


Optionale / zusätzliche Informationen zu Berechtigungen und Paketaktualisierungen:

Hinweis: Das Folgende ist wahrscheinlich nur für Upstart- und SysV-Init-Systeme relevant

Ändern der Berechtigungen für die Konfigurationsdateien von Transmission

Wenn Sie nicht systemd Init - System verwenden , können Sie jetzt brauchen , um die Berechtigungen für die Übertragung der Konfigurationsdateien von Änderungen user=debian-transmissionzu user=some_userund von group=debian-transmissionzu group=some_group.

  1. Überprüfen Sie den Speicherort Ihres Übertragungskonfigurationsverzeichnisses. Sie finden es in der /etc/default/transmission-daemonDatei als Zeile wie folgt erwähnt:

    CONFIG_DIR="/var/lib/transmission-daemon/info"
    
  2. Angenommen, Ihr Konfigurationsverzeichnis lautet /var/lib/transmission-daemon/info: Ändern Sie den Besitz von Konfigurationsdateien:

    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. Ändern Sie den Besitz anderer Dateien:

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

Zusätzliche Informationen (Aktualisierung der Übertragung):

Da Sie den Standardbenutzer geändert haben, wird der Übertragungsdämon nach dem Aktualisieren von Transmission mithilfe des Repositorys (z. B. apt-get upgrade) möglicherweise nicht mehr ausgeführt.

Wenn Sie "sudo apt-get -f install" ausführen, wird der folgende Fehler angezeigt:

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)

Der Grund, warum der Daemon nicht gestartet werden kann ("invoke-rc.d: Initscript Transmission-Daemon, Aktion" Start "fehlgeschlagen."), Ist, dass wir die Berechtigungen von "Debian-Transmission" in "some_user" geändert haben und diese nach dem Update zurückgesetzt wurden . Um dies zu beheben, gehen Sie einfach wie folgt vor:

  1. Stoppen Sie Daemon und bearbeiten Sie die Konfigurationsdatei:

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

    ... und wechseln USER=some_userzuUSER=debian-transmission

  2. Versuchen Sie erneut, das Update zu reparieren, indem Sie Folgendes ausführen:

    sudo apt-get -f install
    
  3. Wenn das Update erfolgreich ist, sollte der Übertragungsdämon jetzt ausgeführt werden. Sie können jetzt die obigen Schritte ausführen, um Benutzer / Gruppe erneut zu ändern.

muhen
quelle
6

Dies ist nicht die vollständige Geschichte. Abgesehen von Änderungen

setgid <groupname>

und

setuid <username>

im

/etc/init/transmission-daemon.conf

Sie müssen auch die Berechtigungen der Konfigurationsdatei von Transmission-Daemon ändern. Andernfalls können die Einstellungen für diese Datei nicht neu geschrieben werden, und der Dämon wird neu gestartet, bis Upstart glaubt, dass er genügend Chancen hat (init: Übertragungsdämon wird zu schnell wieder gestartet, gestoppt).

sudo chown <user>:<group> /etc/transmission-daemon/settings.json
sudo chown -R <user>:<group> /var/lib/transmission-daemon/ 
mrClass
quelle
Vielen Dank für das bisschen über das Ändern der Berechtigungen von settings.json. Hab das verpasst.
Nighthawk454
2

Auf Systemen, die systemd verwenden, lautet die Datei, die Sie bearbeiten möchten, möglicherweise tatsächlich:

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

Nachbearbeitung mit:

sudo systemctl daemon-reload

Epskampie
quelle
Das hat mir geholfen. Ich habe alle anderen Schritte gemacht, aber nicht funktioniert. Danke!
Martijn Smidt
2

In Ubuntu 16.04 wurde der Startdienst von upstart auf systemd geändert, sodass die vorherigen Antworten veraltet sein müssen. So ändern Sie die Ausführung des Benutzerübertragungsdämons:

Daemon stoppen:

sudo service transmission-daemon stop

Ändern Sie den Besitz von Konfigurationsdateien und "home":

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

Dann bearbeiten Sie die Datei /lib/systemd/system/transmission-daemon.servicemit:

[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

Bitte beachten Sie die User, --config-dirund die --log-debugÄnderungen.

Systemkonfiguration neu laden:

sudo systemctl daemon-reload

Starten Sie den Daemon erneut:

sudo service transmission-daemon start

Nachdem Sie die --log-debugOption (mit der Sie weitere Informationen zu Problemen erhalten) festgelegt haben, können Sie das Protokoll des Dämons abrufen:

sudo journalctl -u transmission-daemon.service

Getan.

Dinge zu beachten:

Sie können Dateien ignorieren:

/etc/default/transmission-daemon: Es scheint, dass niemand es in systemd-Systemen bezieht.

/etc/init.d/transmission-daemon: Es scheint, dass dies das alte System 5-Startskript war.

/etc/init/transmission-daemon.conf: Es scheint, dass dies das alte Startskript ist.

Carolina Aguilar
quelle
2
Nicht /lib/systemd/system/transmission-daemon.servicemanuell bearbeiten . Verwenden Sie systemctl edit transmission-daemon.servicestattdessen, oder Ihre Änderungen gehen verloren, wenn Sie das Paket aktualisieren.
Muru
0

Ich habe Folgendes getan, was mir weniger invasiv erscheint als die anderen Antworten.

  1. Entfernen Sie den Start von Transmission-Daemon:

    sudo update-rc.d -f transmission-daemon remove
    
  2. Fügen Sie Folgendes hinzu zu /etc/profile:

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

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

Dies ist vielleicht etwas portabler, es funktioniert für mich auch auf einfachem Debian und Minibian.

nicholas.alipaz
quelle
/etc/profile
Keine