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


10

PPAを介してTransmissionをインストールし、起動時にデーモンが起動します。ダウンロードしたファイルをXBMCインストールと同じユーザーの下に置きたいので、デーモンを実行するユーザーを変更したいのですが、編集する場所を見つけることができません。

デーモンはupstartを使用するため、どのユーザーが実行するかについては/etc/init.d/transmission-daemon何もありません。/etc/default/transmission-daemonまた、ユーザーについても何もありません。

私はこれらのPPAを送信に使用しています:

/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のバージョンを教えてください。私が見たどこでもTransmission-daemonパッケージには/etc/init.d/transmission-daemonファイルがあります。
手配

わからない場合は申し訳ありませんが、そのファイルでどのユーザーがデーモンを実行するかについては何もありませんでした
BvdBijl

/etc/init.d/transmission-daemonファイルの最初に、「USER = debian-transmission」という行があるはずです。それであるはずです。
手配

鉱山は次のようになります:gist.github.com/boukevanderbijl/04c7d6a322a08e9629cb
BvdBijl

最初の投稿で使用するPPAを追加しました
BvdBijl

回答:


4

成り上がり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 2013

1
また、私は持っていたのはsudo chownを-Rユーザー:グループの/ var / libに/トランスミッション・デーモン/言ったようなaskubuntu.com/questions/290943/...
フィリップGachoud

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、同様に実行されます。
muru

7

仮定:

  • このPPAを使用しました: ppa:transmissionbt/ppa
  • ユーザー:some_userとグループ:でTransmissionを実行したいとします。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=
    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 initのとは異なり、システムの伝送-デーモンは、内のすべての構成と設定セーブ/home/some_user/.config/transmission-daemon/の代わりを/etc/transmission-daemon/settings.jsonし、/var/lib/transmission-daemon

ノートとリファレンス


権限とパッケージの更新に関するオプション/追加情報:

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

Transmissionの構成ファイルの権限を変更する

あなたがにsystemd initシステムを使用していない場合、あなたは今からの送信の設定ファイルのパーミッションを変更する必要がありますuser=debian-transmissionuser=some_userしてからgroup=debian-transmissiongroup=some_group

  1. Transmission Configuration Directoryの場所を確認してください。次の/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. 更新が成功すると、送信デーモンが実行されます。上記の手順に従って、ユーザー/グループを再度変更できます。


6

これは完全な話ではありません。変更は別として

setgid <groupname>

そして

setuid <username>

/etc/init/transmission-daemon.conf

また、transmission-daemonの設定ファイルのパーミッションを変更する必要があります。そうでない場合、このファイルの設定を書き換えることはできず、デーモンはupstartが十分な可能性があると考えるまで再起動します(初期:送信デーモンの再生成が速すぎ、停止しました)

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


これは私を助けたものです。他のすべての手順を実行しましたが、機能しませんでした。ありがとうございました!
Martijn Smidt

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:systemdシステムでそれを調達している人はいません。

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

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


2
/lib/systemd/system/transmission-daemon.service手動で編集しないでください。systemctl edit transmission-daemon.service代わりに使用してください。そうしないと、パッケージをアップグレードすると変更が失われます。
muru、

0

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

  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とミニビアンでも動作します。


悪い考えではあり/etc/profileませんが、実行するシェルでユーザーがログインする必要があります(たとえば、zshはそれを実行しません)
elboletaire
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.