web-dev-qa-db-ja.com

Transmissionの実行ユーザーを変更するにはどうすればよいですか?

TransmissionをPPA経由でインストールし、ブート時にデーモンが起動します。ダウンロードしたファイルをXBMCインストールと同じユーザーにしたいので、デーモンを実行するユーザーを変更したいのですが、それを編集する場所が見つからないようです。

デーモンはupstartを使用するため、どのユーザーが/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
9
BvdBijl

Upstart v1.4の時点で、 setuid および setgid は構成ファイルでネイティブにサポートされています。

setgid <groupname>

そして

setuid <username>

V1.4より前は、これを使用できます( ここで説明 ):

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

他のすべての回答は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
11
Douglas Manley

これは完全な話ではありません。変化とは別に

setgid <groupname>

そして

setuid <username>

/etc/init/transmission-daemon.conf

また、transmission-daemonの設定ファイルの権限を変更する必要があります。そうしないと、設定をこのファイルに書き換えることができず、デーモンはupstartが十分なチャンスがあると判断するまで再起動します(init:transmission-daemon respawning too fast、stopped)

Sudo chown <user>:<group> /etc/transmission-daemon/settings.json
Sudo chown -R <user>:<group> /var/lib/transmission-daemon/ 
6
mrClass

仮定:

  • この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-transmissionUSER=some_userに変更します

Upstart initシステム(例:Ubuntu 14.04 LTS):

  1. 伝送デーモンを停止します。

    Sudo service transmission-daemon stop
    
  2. Initスクリプトを編集します。

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

    ...そして次のように編集します:

    • setuid debian-transmissionsetuid some_userに変更します

    • setgid debian-transmissionsetgid 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=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 initシステムとは異なり、伝送デーモンはすべての構成と設定を/home/some_user/.config/transmission-daemon/および/etc/transmission-daemon/settings.jsonではなく/var/lib/transmission-daemonに保存します

メモと参考文献


許可とパッケージの更新に関する追加情報:

注:以下は、UpstartおよびSysV initシステムのみに関連する可能性があります

伝送の設定ファイルのパーミッションの変更

Systemd initシステムを使用していない場合、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であると仮定して、構成ファイルの所有権を変更します。

    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 transmission-daemon、action" start "failed。")は、パーミッションを "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. 更新が成功すると、Transmissionデーモンが実行されているはずです。上記の手順に従って、ユーザー/グループを再度変更できます。

5
moo

Systemdを使用するシステムでは、編集するファイルは実際には次のようになります。

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

以下を使用して編集をフォローアップします。

Sudo systemctl daemon-reload

2
Epskampie

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:systemdシステムでは誰もそれを調達していないようです。

/etc/init.d/transmission-daemon:これは古いシステム5起動スクリプトであるようです。

/etc/init/transmission-daemon.conf:これは古いupstart起動スクリプトのようです。

2

私は次のことをしましたが、他の答えよりも侵襲性が低いようです。

  1. Transmission-daemonの起動を削除します。

    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でも動作します。

0
nicholas.alipaz