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
他のすべての回答は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
これは完全な話ではありません。変化とは別に
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/
ppa:transmissionbt/ppa
some_user
およびグループ:some_group
で送信を実行します伝送デーモンを停止します。
Sudo service transmission-daemon stop
Init.dスクリプトを編集します
Sudo nano /etc/init.d/transmission-daemon
...そしてUSER=debian-transmission
をUSER=some_user
に変更します
伝送デーモンを停止します。
Sudo service transmission-daemon stop
Initスクリプトを編集します。
Sudo nano /etc/init/transmission-daemon.conf
...そして次のように編集します:
setuid debian-transmission
をsetuid some_user
に変更します
setgid debian-transmission
をsetgid some_group
に変更します
伝送デーモンを停止します。
Sudo systemctl stop transmission-daemon.service
Systemd override.confファイルを作成します。
Sudo systemctl edit transmission-daemon.service
...そして次のように編集します:
[Service]
User=nas_user
注:これにより、次のファイルが作成されます:/etc/systemd/system/transmission-daemon.service.d/override.conf
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
に保存します
/etc/default/transmission-daemon
は、Upstartスクリプト(/etc/init.d/transmission-daemon
)およびSysVスクリプト(/etc/init/transmission-daemon.conf
)でのみ使用されるため、Systemd initシステムを使用している場合、これらのファイルはすべて無視できます。
注:以下は、UpstartおよびSysV initシステムのみに関連する可能性があります
伝送の設定ファイルのパーミッションの変更
Systemd initシステムを使用していない場合、Transmissionの設定ファイルのパーミッションをuser=debian-transmission
からuser=some_user
に、およびgroup=debian-transmission
からgroup=some_group
に変更する必要がある場合があります。
転送構成ディレクトリの場所を確認します。 /etc/default/transmission-daemon
ファイルに次のような行として記載されています。
CONFIG_DIR="/var/lib/transmission-daemon/info"
したがって、構成ディレクトリが/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
他のファイルの所有権を変更します。
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"に変更し、更新後にこれらがリセットされたためです。 。そのため、修正するには次のようにします。
デーモンを停止し、構成ファイルを編集します。
Sudo service transmission-daemon stop
Sudo nano /etc/init.d/transmission-daemon
...そしてUSER=some_user
をUSER=debian-transmission
に変更します
次を実行して、修正プログラムの更新を再試行します。
Sudo apt-get -f install
更新が成功すると、Transmissionデーモンが実行されているはずです。上記の手順に従って、ユーザー/グループを再度変更できます。
Systemdを使用するシステムでは、編集するファイルは実際には次のようになります。
/etc/systemd/system/multi-user.target.wants/transmission-daemon.service
以下を使用して編集をフォローアップします。
Sudo systemctl daemon-reload
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起動スクリプトのようです。
私は次のことをしましたが、他の答えよりも侵襲性が低いようです。
Transmission-daemonの起動を削除します。
Sudo update-rc.d -f transmission-daemon remove
以下を/etc/profile
に追加します。
if [ -f "$HOME/.autostart" ]; then
$HOME/.autostart
fi
~/.autostart
を作成:
#!/bin/bash
if [ -z "$(pidof transmission-daemon)" ]; then
/usr/bin/transmission-daemon --config-dir /home/[USERNAME]/.config/transmission-daemon &
fi
これはおそらくもう少し移植性があり、プレーンなDebianとminibianでも動作します。