Как изменить пользователя, под которым запускается Transmission?

Я установил 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
10
задан 26 February 2013 в 03:24

7 ответов

Начиная с версии 1.5, setuid и setgid изначально поддерживаются в конфигурационном файле:

setgid <groupname>

и

[ 111]

До версии 1.4 вы можете использовать это (, как описано здесь ):

exec start-stop-daemon --start -c {user} --exec {command}
0
ответ дан 26 February 2013 в 03:24

Так как все остальные ответы относятся к 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 перезагрузить свои юниты.

sudo systemctl daemon-reload

Далее вы захотите запустить, а затем остановить передачу, чтобы он создал каталог ~/.config/transmission-daemon/ для вашего нового пользователя.

Начать передачу, а затем остановить передачу.

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

Теперь у вас должен быть следующий каталог в домашнем каталоге вашего пользователя: .config/transmission-daemon/

Отсюда вы сможете нормально обновлять ~/.config/transmission-daemon/settings.json.

Когда вы закончите, начните передачу.

sudo systemctl start transmission-daemon
0
ответ дан 26 February 2013 в 03:24

Это не полная история. Помимо изменения

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/ 
0
ответ дан 26 February 2013 в 03:24

В системах, использующих systemd, файл, который вы хотите отредактировать, на самом деле может быть следующим:

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

Последующее редактирование:

sudo systemctl daemon-reload

0
ответ дан 26 February 2013 в 03:24

В 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: Похоже, это старый стартовый скрипт выскочки.

0
ответ дан 26 February 2013 в 03:24

Предположения:

  • Вы использовали этот PPA: ppa:transmissionbt/ppa
  • Вы хотите выполнить Передачу с пользователем: some_user и группа: some_group

Для System V (SysV) init система (например: Ubuntu 10.04 LTS):

  1. Остановите демона передачи:

    sudo service transmission-daemon stop
    
  2. Отредактируйте init.d сценарии

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

    ... и изменение USER=debian-transmission кому: USER=some_user

Для Выскочки init система (например: Ubuntu 14.04 LTS):

  1. Остановите демона передачи:

    sudo service transmission-daemon stop
    
  2. Отредактируйте init сценарии:

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

    ... и редактирование следующим образом:

    • изменение setuid debian-transmission кому: setuid some_user

    • и изменение setgid debian-transmission кому: setgid some_group

Для systemd init система (например: Ubuntu 16.04 LTS):

  1. Остановите демона передачи:

    sudo systemctl stop transmission-daemon.service
    
  2. Создайте 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 руководстве:

      "... для общедоступных файлов, если Вы хотите удалить записи из установки, которая анализируется как список (и не зависимость)... нужно сначала очистить список прежде, чем повторно добавить все записи кроме той, которая должна быть удалена..."

  3. 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

Примечания и Ссылки


Дополнительные полномочия оценки / полномочия оценки Дополнительной информации и обновления пакета:

Примечание: Следующее, вероятно, только важно для Выскочки и систем SysV init только

Изменение Полномочий на конфигурационных файлах Передачи

Если Вы не используете systemd init система, Вы, возможно, теперь должны изменить полномочия для Конфигурационных файлов Передачи от user=debian-transmission кому: user=some_user и от group=debian-transmission кому: group=some_group.

  1. Проверьте местоположение своего Каталога Конфигурации передачи. Можно найти, что это упомянуло в /etc/default/transmission-daemon файл как строка как так:

    CONFIG_DIR="/var/lib/transmission-daemon/info"
    
  2. Так принятие Вашего Каталога Конфигурации /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
    
  3. Владение изменения других файлов:

    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" и после обновления, они были сброшены. Таким образом для фиксации просто делают следующее:

  1. Остановите файл конфигурации Демона и Редактирования:

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

    ... и изменение USER=some_user кому: USER=debian-transmission

  2. Повторите обновление фиксации путем выполнения:

    sudo apt-get -f install
    
  3. Если обновление успешно выполняется, демон Передачи должен теперь работать. Можно теперь выполнить шаги выше для изменения пользователя/группы снова.

7
ответ дан 26 February 2013 в 03:24

Я сделал следующее, что мне кажется менее инвазивным, чем другие ответы.

  1. Удалите запуск демона передачи:

    sudo update-rc.d -f transmission-daemon remove
    
  2. Добавьте следующее в /etc/profile:

    if [ -f "$HOME/.autostart" ]; then
      $HOME/.autostart
    fi
    
  3. [ 117]

    Создать ~/.autostart:

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

Возможно, это немного более переносимо, это работает для меня и на простом Debian и на минибайне.

0
ответ дан 26 February 2013 в 03:24

Другие вопросы по тегам:

Похожие вопросы: