Як я можу змінити користувача, на якому працює Запуск передачі?


10

Я встановив передачу через PPA і демон запускається під час завантаження. Я хочу змінити користувача, який запускає демон, тому що я хочу, щоб завантажені файли знаходилися під тим самим користувачем, що і моя установка XBMC, і я не можу знайти, де це змінити.

Демон використовує функцію запуску, тому немає нічого про те, в яких користувачах він працює, /etc/init.d/transmission-daemonі /etc/default/transmission-daemonпро користувача немає нічого

Я використовую ці папи для передачі:

/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

Чи можете ви надати PPA та версію Ubuntu? Скрізь, де я подивився пакет передач-демон, має файл /etc/init.d/transmission-daemon.
організуйте

Вибачте, якщо мені не було зрозуміло, я мав на увазі, що в цьому файлі немає нічого про те, який користувач запускає демон
BvdBijl

На початку файлу /etc/init.d/transmission-daemon ви повинні побачити рядок "USER = debian-передача"; це повинно бути.
організуйте

Шахта виглядає так: gist.github.com/boukevanderbijl/04c7d6a322a08e9629cb
BvdBijl

Я додав, які PPA використовую у початковому пості
BvdBijl

Відповіді:


4

Станом на upstart v1.4 setuidі setgidпідтримується в конфігураційному файлі:

setgid <groupname>

і

setuid <username>

Перед v1.4 ви можете використовувати це ( як описано тут ):

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

2
Я маю редагувати /etc/init/transmission-daemon.conf
BvdBijl

1
Довелося також судо-чоуну
Філіп Гачуд

15

Оскільки всі інші відповіді стосуються попередньої системи Ubuntu, ось оновлений посібник для Ubuntu 16.04 ( від sensecodons.com ). По суті, створіть додатковий блок для "передачі-daemon.service", щоб змінити User=...налаштування, а потім оновіть файл "~ / .config / передачі-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

3
Замість того, щоб вручну створювати цей каталог і файл, використовуйте systemctl edit transmission-daemon.service, який автоматично 1. створить цей каталог і файл, а також 2. Коли ви зберігаєте та виходите, також запустіть systemctl daemon-reload.
муру

7

Припущення:

  • Ви використовували цей PPA: ppa:transmissionbt/ppa
  • Ви хочете запустити передачу з користувачем: some_userі групою:some_group

Для системи init System V (SysV) (наприклад: 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

Для системи instart Upstart (наприклад: 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

Для системної системи 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=:) використовуються для очищення / скидання значення існуючої змінної. Це здається, як це робиться при використанні заміни системного блоку, що випадає. Див. "Приклад 2. Переосмислення параметрів постачальника" в посібнику systemd.unit :

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

  3. Система перезавантаження та запуск демона передачі:

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

    Примітка: На відміну від систем Upstart і SysV init передача-демон зберігає всі конфігурації та налаштування /home/some_user/.config/transmission-daemon/замість /etc/transmission-daemon/settings.jsonі/var/lib/transmission-daemon

Примітки та посилання


Додаткова / додаткова інформація щодо дозволів та оновлень пакета:

Примітка. Наступне, ймовірно, стосується лише систем Upstart та 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
    

Додаткова інформація (оновлення передачі):

Оскільки ви змінили користувача за замовчуванням, ви можете виявити, що після оновлення передачі за допомогою сховища (наприклад: 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 передача-демон, дія" запуск "не вдалося"), тому що ми змінили дозволи з "debian-передачі" на "some_user" і після оновлення вони отримали скидання . Отже, для виправлення виконайте наступне:

  1. Зупинення Daemon та редагування конфігураційного файлу:

    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. Якщо оновлення вдалося, демона передачі зараз має працювати. Тепер ви можете виконувати кроки вище, щоб знову змінити користувача / групу.


6

Це ще не повна історія. Крім зміни

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/ 

Дякуємо за трохи про зміну дозволів settings.json. Пропустив це.
nighthawk454

2

У системах, що використовують systemd, файл, який ви хочете відредагувати, насправді може бути:

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

Продовжуйте редагування за допомогою:

sudo systemctl daemon-reload


Це мені допомогло. Я робив усі інші кроки, але не працював. Дякую!
Мартійн Смідт

2

У Ubuntu 16.04 послуга запуску була змінена з початкової на системну, що робить застарілі відповіді застарілими. Щоб змінити користувальницьку передачу-демон демонів, виконайте:

Зупинити демон:

sudo service transmission-daemon stop

Змініть право власності на конфігураційні файли та "домашню":

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зміни.

Перезавантажте системну конфігурацію:

sudo systemctl daemon-reload

Почніть демон знову:

sudo service transmission-daemon start

Після встановлення --log-debug(що дасть вам більше інформації про будь-яку проблему) ви можете отримати журнал демона:

sudo journalctl -u transmission-daemon.service

Зроблено.

Що слід зазначити:

Ви можете ігнорувати файли:

/etc/default/transmission-daemon: Здається, що ніхто не шукає цього в системних системах.

/etc/init.d/transmission-daemon: Схоже, це був старий сценарій запуску системи 5.

/etc/init/transmission-daemon.conf: Здається, що це старий сценарій запуску на початку.


2
Не редагуйте /lib/systemd/system/transmission-daemon.serviceвручну. Використовуйте systemctl edit transmission-daemon.serviceнатомість, інакше ваші зміни будуть оновлені під час оновлення пакета.
муру

0

Я зробив наступне, що мені здається менш інвазивним, ніж інші відповіді.

  1. Видаліть запуск передачі-демон:

    sudo update-rc.d -f transmission-daemon remove
    
  2. Додайте до /etc/profile:

    if [ -f "$HOME/.autostart" ]; then
      $HOME/.autostart
    fi
    
  3. Створити ~/.autostart:

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

Це, можливо, трохи більш портативно, він працює для мене і на звичайних Debian і minibian.


не погана ідея, але вона вимагає, щоб користувач входив із оболонкою, яка виконується /etc/profile(наприклад, zsh не виконує її)
elboletaire
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.