web-dev-qa-db-fra.com

Comment changer l'utilisateur? La transmission fonctionne sous?

J'ai installé Transmission via un PPA et le démon démarre au démarrage. Je souhaite changer l'utilisateur qui exécute le démon car je souhaite que les fichiers téléchargés soient placés sous le même utilisateur que mon installation XBMC, et je ne semble pas pouvoir trouver où l'éditer.

Le démon utilise upstart, il n'y a donc aucune information sur les utilisateurs qui l'exécutent dans /etc/init.d/transmission-daemon et il n'y a rien dans /etc/default/transmission-daemon concernant l'utilisateur

J'utilise ces ppas pour la transmission:

/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

À partir de la dernière version 1.4, setuid et setgid sont pris en charge de manière native dans le fichier de configuration:

setgid <groupname>

et

setuid <username>

Avant la v1.4, vous pouvez utiliser ceci ( comme décrit ici ):

exec start-stop-daemon --start -c {user} --exec {command}
4
Rinzwind

Puisque toutes les autres réponses concernent Ubuntu pre-systemd, voici un guide mis à jour pour Ubuntu 16.04 ( de sensecodons.com ). Pour l'essentiel, créez une unité supplémentaire pour "transmission-daemon.service" afin de modifier le paramètre User=..., puis mettez à jour le fichier "~/.config/transmission-daemon/settings.json" de cet utilisateur.

Arrêtez la transmission (si elle est déjà en cours d'exécution).

Sudo systemctl stop transmission-daemon

Créez le répertoire du fichier de supplément pour la transmission:

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

Créez un nouveau fichier de supplément appelé "run-as-user.conf".

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

et mettez le texte suivant dedans.

[Service]
User=codon

De toute évidence, utilisez votre nom d'utilisateur souhaité et non "codon".

Dites à systemd de recharger ses unités.

Sudo systemctl daemon-reload

Ensuite, vous voudrez commencer puis arrêter la transmission pour lui faire créer le répertoire ~/.config/transmission-daemon/ pour votre nouvel utilisateur.

Commencez la transmission puis arrêtez la transmission.

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

Vous devriez maintenant avoir le répertoire suivant dans le répertoire personnel de votre utilisateur: .config/transmission-daemon/

À partir de là, vous devriez pouvoir mettre à jour ~/.config/transmission-daemon/settings.json normalement.

Lorsque vous avez terminé, commencez la transmission.

Sudo systemctl start transmission-daemon
11
Douglas Manley

Ce n'est pas l'histoire complète. En plus de changer

setgid <groupname>

et

setuid <username>

dans

/etc/init/transmission-daemon.conf

vous devez également modifier les autorisations du fichier de configuration de transmission-daemon. Sinon, il ne sera pas possible de réécrire les paramètres dans ce fichier et le démon redémarrera jusqu'à ce que upstart pense qu'il a assez de chances (init: transmission-daemon respawning trop rapide, arrêté)

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

Hypothèses:

  • Vous avez utilisé ce PPA: ppa:transmissionbt/ppa
  • Vous souhaitez exécuter la transmission avec l'utilisateur: some_user et le groupe: some_group

Pour le système init System V (SysV) (par exemple: Ubuntu 10.04 LTS):

  1. Arrêtez le démon de transmission:

    Sudo service transmission-daemon stop
    
  2. Editer les scripts init.d

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

    ... et remplacez USER=debian-transmission par USER=some_user

Pour le système init Upstart (par exemple: Ubuntu 14.04 LTS):

  1. Arrêtez le démon de transmission:

    Sudo service transmission-daemon stop
    
  2. Éditez les scripts d'initialisation:

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

    ... et éditez comme suit:

    • remplacez setuid debian-transmission par setuid some_user

    • et remplacez setgid debian-transmission par setgid some_group

Pour systemd init system (par exemple: Ubuntu 16.04 LTS):

  1. Arrêtez le démon de transmission:

    Sudo systemctl stop transmission-daemon.service
    
  2. Créez le fichier override.conf de systemd:

    Sudo systemctl edit transmission-daemon.service
    

    ... et éditez comme suit:

    [Service]
    User=nas_user
    

    Remarque: le fichier suivant est créé: /etc/systemd/system/transmission-daemon.service.d/override.conf

  3. Systemd recharger et démarrer le démon de transmission:

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

    Remarque: Contrairement aux systèmes Upstart et SysV, transmission-daemon enregistre toutes les configurations et tous les paramètres dans /home/some_user/.config/transmission-daemon/ au lieu de /etc/transmission-daemon/settings.json et /var/lib/transmission-daemon.

Notes et références


Informations supplémentaires concernant les autorisations et les mises à jour de packages:

Remarque: Les éléments suivants ne sont probablement pertinents que pour les systèmes Upstart et SysV init

Modification des autorisations sur les fichiers de configuration de la transmission

Si vous n'utilisez pas systemd init system, vous devrez peut-être maintenant modifier les autorisations pour les fichiers de configuration de Transmission de user=debian-transmission à user=some_user et de group=debian-transmission à group=some_group.

  1. Vérifiez l'emplacement de votre répertoire de configuration de transmission. Vous pouvez le trouver mentionné dans le fichier /etc/default/transmission-daemon en tant que ligne, comme ceci:

    CONFIG_DIR="/var/lib/transmission-daemon/info"
    
  2. Donc, en supposant que votre répertoire de configuration est /var/lib/transmission-daemon/info, changez le propriétaire des fichiers de configuration:

    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. Changer la propriété d'autres fichiers:

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

Informations supplémentaires (transmission de mise à jour):

Comme vous avez modifié l'utilisateur par défaut, vous constaterez peut-être qu'après la mise à jour de Transmission en utilisant le référentiel (par exemple: apt-get upgrade), le démon de transmission n'est plus en cours d'exécution.

L'exécution de "Sudo apt-get -f install" génère l'erreur suivante:

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)

La raison pour laquelle le démon ne parvient pas à démarrer ("invoke-rc.d: démon de transmission initscript, l'action" start "a échoué.") Est due au fait que nous avons modifié les autorisations de "debian-transmission" en "some_user". Après la mise à jour, ces autorisations ont été réinitialisées. . Donc, pour réparer, procédez comme suit:

  1. Arrêtez le démon et modifiez le fichier de configuration:

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

    ... et remplacez USER=some_user par USER=debian-transmission

  2. Réessayez de réparer la mise à jour en exécutant:

    Sudo apt-get -f install
    
  3. Si la mise à jour réussit, le démon de transmission devrait maintenant être en cours d'exécution. Vous pouvez maintenant suivre les étapes ci-dessus pour changer à nouveau d'utilisateur/groupe.

5
moo

Sur les systèmes utilisant systemd, le fichier que vous souhaitez modifier peut en réalité être:

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

Suivi de l'édition avec:

Sudo systemctl daemon-reload

2
Epskampie

Dans Ubuntu 16.04, le service de démarrage a été changé de upstart à systemd, ce qui a rendu obsolètes les réponses précédentes. Pour changer le démon de transmission utilisateur exécuté, exécutez:

Arrêtez le démon:

Sudo service transmission-daemon stop

Changer la propriété des fichiers de configuration et "home":

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

Puis éditez le fichier /lib/systemd/system/transmission-daemon.service avec:

[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

Veuillez noter que Username__, --config-diret le --log-debug changent.

Recharger la configuration de systemd:

Sudo systemctl daemon-reload

Relancez le démon:

Sudo service transmission-daemon start

Une fois que vous avez défini l'option --log-debug (qui vous donnera plus d'informations sur tout problème), vous pouvez obtenir le journal du démon:

Sudo journalctl -u transmission-daemon.service

Terminé.

choses à noter:

Vous pouvez ignorer les fichiers:

/etc/default/transmission-daemon: Il semble que personne ne l’achète dans les systèmes systemd.

/etc/init.d/transmission-daemon: Il semble que ce soit l'ancien script de démarrage du système 5.

/etc/init/transmission-daemon.conf: Il semble que ce soit l'ancien script de démarrage parvenu.

2
Carolina Aguilar

J'ai fait ce qui suit, ce qui me semble moins invasif que les autres réponses.

  1. Supprimez le démarrage de transmission-daemon:

    Sudo update-rc.d -f transmission-daemon remove
    
  2. Ajoutez les éléments suivants à /etc/profile:

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

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

C’est un peu plus portable peut-être, cela fonctionne aussi pour moi sur Debian et minibian.

0
nicholas.alipaz