Как изменить пользователя, под которым запускается 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
9
задан 01.03.2020, 16:39

6 ответов

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

  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
ответ дан 01.03.2020, 16:39
  • 1
    не плохая идея, но это требует, чтобы пользователь вошел в систему с оболочкой, которая выполняется /etc/profile (zsh doesn' t выполняют его, например), – magic.77 01.03.2020, 16:40

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

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

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

sudo systemctl daemon-reload

0
ответ дан 01.03.2020, 16:40
  • 1
    Это - то, что помогло мне. Я сделал все другие шаги, но didn' t работа.Спасибо! – Fabian N. 01.03.2020, 16:40

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

setgid <groupname>

и

[ 111]

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

exec start-stop-daemon --start -c {user} --exec {command}
0
ответ дан 01.03.2020, 16:40

Допущения:

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

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

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

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

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

      ... и измените USER=debian-transmission на USER=some_user

    Для системы инициализации Upstart (например: Ubuntu 14.04) LTS):

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

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

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

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

      • измените setuid debian-transmission на setuid some_user

      • и измените setgid debian-transmission на setgid some_group [1183 ]

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

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

      [114 ]
    2. Создайте файл systemd override.conf:

      sudo systemctl edit transmission-daemon.service
      

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

      [Service]
      User=nas_user
      

      Примечание. Это создает следующий файл: /etc/systemd/system/transmission-daemon.service.d/override.conf

    3. Демон Systemd перезагрузки и запуска передачи:

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

      Примечание: В отличие от передачи систем инициализации Upstart и SysV -daemon сохраняет все настройки и настройки в /home/some_user/.config/transmission-daemon/ вместо /etc/transmission-daemon/settings.json и /var/lib/transmission-daemon

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

    < hr>

    Дополнительная информация о разрешениях и обновлениях пакетов:

    Примечание. Следующее, вероятно, относится только к системам инициализации Upstart и SysV

    Изменение Права доступа к файлам конфигурации Transmission

    Если вы не используете systemd init system, вам теперь может потребоваться изменить разрешения для файлов конфигурации Transmission с 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, измените владельца файлов конфигурации: [1198 ]

      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
      

    Дополнительная информация (обновление передачи):

    Поскольку вы изменили пользователя по умолчанию, вы можете обнаружить, что после обновления Transmission с использованием репозитория (например, apt-get upgrade) демон передачи больше не работает.

    Запуск «sudo apt-get -f install» приводит к следующей ошибке:

    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)
    

    Причина, по которой демон не запускается («invoke-rc.d: initscript translation-daemon, action» start «fail.») потому что мы изменили разрешения с «debian-translation» на «some_user» и после обновления они были сброшены. Для исправления просто сделайте следующее:

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

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

      ... и измените USER=some_user на USER=debian-transmission [11105 ]

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

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

    4. [+1175]
0
ответ дан 01.03.2020, 16:41

Так как все остальные ответы относятся к 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
ответ дан 01.03.2020, 16:41
  • 1
    Вместо того, чтобы вручную создать тот каталог и файл, используйте systemctl edit transmission-daemon.service, который автоматически 1. создаст тот каталог и файл и 2. когда Вы будете сохранять и будете выходить, работать systemctl daemon-reload также. – Adrian S. 01.03.2020, 16:42

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

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
ответ дан 01.03.2020, 16:42
  • 1
    Спасибо за бит об изменении полномочий settings.json. Пропущенный это. – Raghav 01.03.2020, 16:42

Теги

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