it-swarm.com.de

Wie ändere ich den Benutzer, unter dem die Übertragung läuft?

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 gespeichert werden sollen und ich anscheinend nicht finde, wo ich sie bearbeiten kann.

Der Daemon verwendet upstart, daher gibt es keine Informationen darüber, welche Benutzer ihn in /etc/init.d/transmission-daemon ausführen, und es gibt auch keine Informationen über den Benutzer in /etc/default/transmission-daemon

Ich benutze 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
9
BvdBijl

Ab Upstart v1.4 werden setuid und setgid 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}
4
Rinzwind

Da alle anderen Antworten auf Ubuntu Pre-Systemd zutreffen, 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 Einstellung User=... zu ändern, und aktualisieren Sie dann die Datei "~/.config/transmission-daemon/settings.json" dieses Benutzers.

Stoppen Sie die Übertragung (wenn 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 geben Sie den folgenden Text ein.

[Service]
User=codon

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

Weisen Sie systemd an, die Einheiten neu zu laden.

Sudo systemctl daemon-reload

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

Starten Sie die Übertragung und beenden Sie die Übertragung.

Sudo systemctl start transmission-daemon; Sudo systemctl stop transmission-daemon

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

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

Wenn Sie fertig sind, starten Sie die Übertragung.

Sudo systemctl start transmission-daemon
11
Douglas Manley

Dies ist nicht die vollständige Geschichte. Abgesehen von der Veränderung

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 Daemon wird neu gestartet, bis der Upstart glaubt, dass er über genügend Chancen verfügt (init: Transmission-Daemon wird zu schnell neu gestartet, angehalten).

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

Annahmen:

  • Sie haben diesen PPA verwendet: ppa:transmissionbt/ppa
  • Sie möchten Transmission mit Benutzer: some_user und Gruppe: some_group ausführen.

Für System V (SysV) Init System (zB: Ubuntu 10.04 LTS):

  1. Stoppen Sie den Transmission Daemon:

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

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

    ... und ändere USER=debian-transmission in USER=some_user

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

  1. Stoppen Sie den Transmission Daemon:

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

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

    ... und wie folgt bearbeiten:

    • ändere setuid debian-transmission in setuid some_user

    • und ändere setgid debian-transmission in setgid some_group

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

  1. Stoppen Sie den Transmission Daemon:

    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=nas_user
    

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

  3. Systemd neu laden und Übertragungsdämon starten:

    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 in /home/some_user/.config/transmission-daemon/ anstelle von /etc/transmission-daemon/settings.json und /var/lib/transmission-daemon

Notizen & Referenzen


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 Übertragungskonfigurationsdateien

Wenn Sie systemd init system nicht verwenden, müssen Sie jetzt möglicherweise die Berechtigungen für die Konfigurationsdateien von Transmission von user=debian-transmission in user=some_user und von group=debian-transmission in group=some_group ändern.

  1. Überprüfen Sie den Speicherort Ihres Übertragungskonfigurationsverzeichnisses. Sie finden es in der /etc/default/transmission-daemon -Datei in der folgenden Zeile:

    CONFIG_DIR="/var/lib/transmission-daemon/info"
    
  2. Angenommen, Ihr Konfigurationsverzeichnis ist /var/lib/transmission-daemon/info, ändern Sie den Besitz der 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. Eigentümer anderer Dateien ändern:

    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, kann es vorkommen, dass der Übertragungsdämon nach der Aktualisierung von Transmission über das Repository (z. B. apt-get upgrade) nicht mehr ausgeführt wird.

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

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 startet ("invoke-rc.d: initscript transmission-daemon, Aktion" start "failed."), Ist, dass wir die Berechtigungen von "debian-transmission" auf "some_user" geändert haben und diese nach dem Update zurückgesetzt wurden . Um das Problem zu beheben, gehen Sie wie folgt vor:

  1. Stoppen Sie den Daemon und bearbeiten Sie die Konfigurationsdatei:

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

    ... und ändere USER=some_user in USER=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 Transmission Daemon jetzt ausgeführt werden. Sie können jetzt die obigen Schritte ausführen, um den Benutzer/die Gruppe erneut zu ändern.

5
moo

Auf Systemen, die systemd verwenden, kann die zu bearbeitende Datei tatsächlich sein:

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

Nachbearbeitung mit:

Sudo systemctl daemon-reload

2
Epskampie

In Ubuntu 16.04 wurde der Startdienst von "upstart" auf "systemd" geändert, wodurch das "must" der vorherigen Antworten überflüssig wurde. Um die Benutzerübertragungs-Daemon-Läufe zu ändern, führen Sie Folgendes aus:

Dämon stoppen:

Sudo service transmission-daemon stop

Eigentümer von Konfigurationsdateien und "home" ändern:

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

Dann editiere die Datei /lib/systemd/system/transmission-daemon.service mit:

[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-dir und die --log-debug Änderungen.

Systemd Konfiguration neu laden:

Sudo systemctl daemon-reload

Starten Sie den Daemon erneut:

Sudo service transmission-daemon start

Nachdem Sie die Option --log-debug (mit der Sie weitere Informationen zu Problemen erhalten) festgelegt haben, können Sie das Daemon-Protokoll 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 beschafft.

/etc/init.d/transmission-daemon: Dies scheint das alte Startskript für System 5 zu sein.

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

2

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 /etc/profile Folgendes hinzu:

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

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

Dies ist vielleicht ein bisschen portabler, es funktioniert für mich auch mit einfachen Debian- und Minibian-Versionen.

0
nicholas.alipaz