Я установил Transmission через PPA, и демон запускается при загрузке. Я хочу изменить пользователя, который запускает демон, потому что я хочу, чтобы загруженные файлы были под тем же пользователем, что и моя установка XBMC, и я не могу найти, где это редактировать.
Демон использует upstart, поэтому нет ничего о том, какие пользователи запускают его в /etc/init.d/transmission-daemon
, и в /etc/default/transmission-daemon
нет ничего о пользователе
Я использую эти ppas для передачи: [ 115]
/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
Начиная с версии 1.5, setuid
и setgid
изначально поддерживаются в конфигурационном файле:
setgid <groupname>
и
[ 111]До версии 1.4 вы можете использовать это (, как описано здесь ):
exec start-stop-daemon --start -c {user} --exec {command}
Так как все остальные ответы относятся к pre-systemd Ubuntu, вот обновленное руководство для Ubuntu 16.04 ( от sensecodons.com ). По сути, создайте дополнительный модуль для «translation-daemon.service», чтобы изменить настройку User=...
, а затем обновите файл этого пользователя «~ / .config / transmission-daemon / settings.json».
Остановить передачу (если она уже запущена).
sudo systemctl stop transmission-daemon
Создайте каталог файла дополнений для передачи:
sudo mkdir -p /etc/systemd/system/transmission-daemon.service.d
Создайте новый файл дополнения с именем «run-as-user.conf».
sudo vi /etc/systemd/system/transmission-daemon.service.d/run-as-user.conf
и вставьте в него следующий текст.
[Service] User=codon
Очевидно, используйте желаемое имя пользователя, а не «кодон».
Скажите systemd перезагрузить свои юниты.
blockquote>sudo systemctl daemon-reload
Далее вы захотите запустить, а затем остановить передачу, чтобы он создал каталог
~/.config/transmission-daemon/
для вашего нового пользователя.Начать передачу, а затем остановить передачу.
sudo systemctl start transmission-daemon; sudo systemctl stop transmission-daemon
Теперь у вас должен быть следующий каталог в домашнем каталоге вашего пользователя:
blockquote>.config/transmission-daemon/
Отсюда вы сможете нормально обновлять
~/.config/transmission-daemon/settings.json
.Когда вы закончите, начните передачу.
sudo systemctl start transmission-daemon
Это не полная история. Помимо изменения
setgid <groupname>
и
setuid <username>
в
/etc/init/transmission-daemon.conf
вам также необходимо изменить права доступа к файлу конфигурации демона передачи. В противном случае он не сможет перезаписать настройки в этот файл, и демон будет перезапущен до тех пор, пока upstart не решит, что у него достаточно шансов (init: передача-демон слишком быстро восстанавливается, остановлен)
sudo chown <user>:<group> /etc/transmission-daemon/settings.json
sudo chown -R <user>:<group> /var/lib/transmission-daemon/
В системах, использующих systemd, файл, который вы хотите отредактировать, на самом деле может быть следующим:
/etc/systemd/system/multi-user.target.wants/transmission-daemon.service
Последующее редактирование:
sudo systemctl daemon-reload
В Ubuntu 16.04 служба запуска была изменена с upstart на systemd, что сделало необходимость предыдущих ответов устаревшей. Чтобы изменить запуски демона передачи пользователя, выполните:
Остановить демона:
sudo service transmission-daemon stop
Смена владельца файлов конфигурации и «home»:
sudo chown -R USER:USER /var/lib/transmission-daemon/*
sudo chown -R USER:USER /etc/transmission-daemon/settings.json
Затем отредактируйте файл /lib/systemd/system/transmission-daemon.service
с:
[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
Обратите внимание на изменения User
, --config-dir
и --log-debug
.
Перезагрузите конфигурацию systemd:
sudo systemctl daemon-reload
Снова запустите демон:
sudo service transmission-daemon start
После того, как вы установили опцию --log-debug
(которая даст вам больше информации о любой проблеме), вы можно получить лог демона:
sudo journalctl -u transmission-daemon.service
Готово.
Вещи, на которые следует обратить внимание:
Вы можете игнорировать файлы:
/etc/default/transmission-daemon
: кажется, что никто не использует его в системах systemd.
/etc/init.d/transmission-daemon
: Похоже, это был старый стартовый скрипт системы 5.
/etc/init/transmission-daemon.conf
: Похоже, это старый стартовый скрипт выскочки.
ppa:transmissionbt/ppa
some_user
и группа: some_group
Остановите демона передачи:
sudo service transmission-daemon stop
Отредактируйте init.d сценарии
sudo nano /etc/init.d/transmission-daemon
... и изменение USER=debian-transmission
кому: USER=some_user
Остановите демона передачи:
sudo service transmission-daemon stop
Отредактируйте init сценарии:
sudo nano /etc/init/transmission-daemon.conf
... и редактирование следующим образом:
изменение setuid debian-transmission
кому: setuid some_user
и изменение setgid debian-transmission
кому: setgid some_group
Остановите демона передачи:
sudo systemctl stop transmission-daemon.service
Создайте systemd override.conf файл:
sudo systemctl edit transmission-daemon.service
... и редактирование следующим образом:
[Service]
User=
User=some_user
Group=
Group=some_group
Примечания:
Это создает следующий файл: /etc/systemd/system/transmission-daemon.service.d/override.conf
Пустые переменные присвоения (например: User=
) используются для очищения/сбрасывания значения в существующей переменной. Это, кажется, как вещи сделаны при использовании общедоступной замены systemd файла единицы. См.: "Пример 2. Переопределяющие настройки поставщика" в systemd.unit руководстве:
"... для общедоступных файлов, если Вы хотите удалить записи из установки, которая анализируется как список (и не зависимость)... нужно сначала очистить список прежде, чем повторно добавить все записи кроме той, которая должна быть удалена..."
Systemd перезагружают и запускают демона передачи:
sudo systemctl daemon-reload
sudo systemctl start transmission-daemon.service
Примечание: В отличие от этого, с Выскочкой и системным демоном передачи SysV init сохраняет всю конфигурацию и настройки в /home/some_user/.config/transmission-daemon/
вместо /etc/transmission-daemon/settings.json
и /var/lib/transmission-daemon
/etc/default/transmission-daemon
используется только Новомодными сценариями (/etc/init.d/transmission-daemon
) и сценарии SysV (/etc/init/transmission-daemon.conf
) и поэтому при использовании системы Systemd init затем, можно проигнорировать все эти файлы.
Reddit: Изменение systemd пользователь с общедоступной заменой для демона передачи, не работающего
Примечание: Следующее, вероятно, только важно для Выскочки и систем SysV init только
Изменение Полномочий на конфигурационных файлах Передачи
Если Вы не используете systemd init система, Вы, возможно, теперь должны изменить полномочия для Конфигурационных файлов Передачи от user=debian-transmission
кому: user=some_user
и от group=debian-transmission
кому: group=some_group
.
Проверьте местоположение своего Каталога Конфигурации передачи. Можно найти, что это упомянуло в /etc/default/transmission-daemon
файл как строка как так:
CONFIG_DIR="/var/lib/transmission-daemon/info"
Так принятие Вашего Каталога Конфигурации /var/lib/transmission-daemon/info
, владение изменения конфигурационных файлов:
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
Владение изменения других файлов:
sudo chown :some_group /etc/transmission-daemon
sudo chown some_user:some_group /etc/transmission-daemon/settings.json
Дополнительная информация (обновляющий передачу):
Поскольку Вы изменили пользователя по умолчанию, можно найти что после обновления Передачи с помощью репозитория (например: склонный - получают обновление), демон передачи больше не работает.
Выполнение "sudo склонный - добирается, установка-f" дают следующую ошибку:
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)
Причина, которую демону не удается запустить ("вызовите-rc.d: демон передачи initscript, действие "запускается" отказавший".) то, потому что мы изменили полномочия от "debian-передачи" до "some_user" и после обновления, они были сброшены. Таким образом для фиксации просто делают следующее:
Остановите файл конфигурации Демона и Редактирования:
sudo service transmission-daemon stop
sudo nano /etc/init.d/transmission-daemon
... и изменение USER=some_user
кому: USER=debian-transmission
Повторите обновление фиксации путем выполнения:
sudo apt-get -f install
Если обновление успешно выполняется, демон Передачи должен теперь работать. Можно теперь выполнить шаги выше для изменения пользователя/группы снова.
Я сделал следующее, что мне кажется менее инвазивным, чем другие ответы.
Удалите запуск демона передачи:
sudo update-rc.d -f transmission-daemon remove
Добавьте следующее в /etc/profile
:
if [ -f "$HOME/.autostart" ]; then
$HOME/.autostart
fi
Создать ~/.autostart
:
#!/bin/bash
if [ -z "$(pidof transmission-daemon)" ]; then
/usr/bin/transmission-daemon --config-dir /home/[USERNAME]/.config/transmission-daemon &
fi
Возможно, это немного более переносимо, это работает для меня и на простом Debian и на минибайне.