如何更改用户的传输运行频率?


10

我通过PPA安装了Transmission,并且守护程序在启动时启动。我想更改运行守护程序的用户,因为我希望下载的文件与XBMC安装在同一用户下,而我似乎找不到在何处进行编辑。

守护程序使用新贵,因此没有哪个用户在运行它/etc/init.d/transmission-daemon,也没有/etc/default/transmission-daemon关于用户的任何东西

我正在使用这些ppas进行传输:

/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 2013年

在/etc/init.d/transmission-daemon文件的开始,您应该看到“ USER = debian-transmission”行;应该的。
安排


我添加了我在开始帖子中使用的PPA
BvdBijl

Answers:



15

由于所有其他答案都是针对Ubuntu pre-systemd的,因此,这是Ubuntu 16.04的更新指南(来自sensecodons.com)。本质上,为“ transmission-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

3
而不是手动创建该目录和文件,而使用systemctl edit transmission-daemon.service,它将自动1.创建该目录和文件,以及2.保存并退出后,也运行systemctl daemon-reload
大师

7

假设:

  • 您使用了此PPA: ppa:transmissionbt/ppa
  • 您要使用“用户:” some_user和“组” 运行“传输” :some_group

对于系统V(SysV)初始化系统(例如:Ubuntu 10.04 LTS):

  1. 停止传输守护程序:

    sudo service transmission-daemon stop
    
  2. 编辑init.d脚本

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

    ...然后更改USER=debian-transmissionUSER=some_user

对于Upstart初始化系统(例如:Ubuntu 14.04 LTS):

  1. 停止传输守护程序:

    sudo service transmission-daemon stop
    
  2. 编辑初始化脚本:

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

    ...并进行如下修改:

    • 更改setuid debian-transmissionsetuid some_user

    • 并更改setgid debian-transmissionsetgid some_group

对于systemd初始化系统(例如:Ubuntu 16.04 LTS):

  1. 停止传输守护程序:

    sudo systemctl stop transmission-daemon.service
    
  2. 创建systemd overlay.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单元文件的直接替换时完成的事情。请参阅:systemd.unit手册中的 “示例2.覆盖供应商设置” :

      “ ...对于嵌入式文件,如果要从解析为列表(而不是依赖项)的设置中删除条目,...则需要先清除列表,然后再重新添加所有条目,但那个要被移除的...”

  3. Systemd重新加载并启动传输守护程序:

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

    注:不像暴发户和SysV初始化系统传输守护保存在所有配置和设置/home/some_user/.config/transmission-daemon/,而不是/etc/transmission-daemon/settings.json/var/lib/transmission-daemon

注释和参考


有关权限和程序包更新的可选/附加信息:

注意:以下内容可能仅与Upstart和SysV初始化系统有关

更改传输的配置文件的权限

如果你不使用systemd初始化系统现在可能需要改变从变速箱的配置文件的访问权限user=debian-transmissionuser=some_usergroup=debian-transmissiongroup=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:初始化脚本传输守护程序,操作“启动”失败。”)是因为我们将权限从“ debian-transmission”更改为“ some_user”,并且在更新后将其重置。因此,只需执行以下操作即可解决:

  1. 停止守护程序并编辑配置文件:

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

    ...然后更改USER=some_userUSER=debian-transmission

  2. 通过运行以下命令重试修复更新:

    sudo apt-get -f install
    
  3. 如果更新成功,则传输守护程序现在应该正在运行。现在,您可以按照上述步骤再次更改用户/组。


6

这不是完整的故事。除了改变

setgid <groupname>

setuid <username>

/etc/init/transmission-daemon.conf

您还需要更改transmission-daemon的配置文件的权限。否则它将无法将设置重写到该文件,并且守护进程将重新启动,直到新贵认为它有足够的机会(初始化:transmission-daemon重新生成太快,已停止)

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中,启动服务已从upstart更改为systemd,这使得先前的答案必须已过时。要更改用户传输守护程序的运行,请执行:

停止守护程序:

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变化。

重新加载systemd配置:

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改用,否则升级软件包时,更改将丢失。
muru

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。


这不是一个坏主意,但是它要求用户使用执行的shell登录/etc/profile(例如zsh不会执行)
elboletaire 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.