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
À 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}
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
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/
ppa:transmissionbt/ppa
some_user
et le groupe: some_group
Arrêtez le démon de transmission:
Sudo service transmission-daemon stop
Editer les scripts init.d
Sudo nano /etc/init.d/transmission-daemon
... et remplacez USER=debian-transmission
par USER=some_user
Arrêtez le démon de transmission:
Sudo service transmission-daemon stop
É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
Arrêtez le démon de transmission:
Sudo systemctl stop transmission-daemon.service
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
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
.
/etc/default/transmission-daemon
est utilisé uniquement par les scripts Upstart (/etc/init.d/transmission-daemon
) et les scripts SysV (/etc/init/transmission-daemon.conf
). Ainsi, si vous utilisez Systemd init system, vous pouvez ignorer tous ces fichiers.
Exécution d'une transmission en tant qu'utilisateur dans Ubuntu 16.04
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
.
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"
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
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:
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
Réessayez de réparer la mise à jour en exécutant:
Sudo apt-get -f install
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.
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
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 User
name__, --config-dir
et 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.
J'ai fait ce qui suit, ce qui me semble moins invasif que les autres réponses.
Supprimez le démarrage de transmission-daemon:
Sudo update-rc.d -f transmission-daemon remove
Ajoutez les éléments suivants à /etc/profile
:
if [ -f "$HOME/.autostart" ]; then
$HOME/.autostart
fi
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.