カスタムユーザーとして実行されているトランスポートデーモンが無効なパスから構成をロードしようとしました

カスタムユーザーとして実行されているトランスポートデーモンが無効なパスから構成をロードしようとしました

Debian 10 システムで転送デーモン 2.94 をサービスとして実行しています。

Apacheが保存ファイルを読み取ることができ、逆に転送がApacheファイルを読み取ることを望んでいたので、転送デーモンを実行しているユーザーをデフォルトからApacheユーザーdebian-transmissionに変更しました。www-data

これを行うには、次のプロファイルをユーザー設定に変更しました。

  • User=www-data存在する/lib/systemd/system/transmission-daemon.service
  • USER=www-data存在する/etc/init.d/transmission-daemon
  • setuid www-datasetgid www-dataそして/etc/init/transmission-daemon.conf

転送されたJSON設定ファイルはまだ存在します。ディレクトリとwww-dataの両方が新しいユーザーに属していることを/etc/transmission-daemon/settings.json確認しました。/var/lib/transmission-daemon/etc/transmission-daemon

sudo systemctl start transmission-daemonただし、サービスを使用または再起動すると、トランスsudo service transmission-daemon startポートログに次の情報が表示されます。

Couldn't create "/var/www/.config": Permission denied (file-posix.c:189)
Couldn't read "/var/www/.config/transmission-daemon/settings.json": No such file or directory (utils.c:238)
Couldn't save temporary file "/var/www/.config/transmission-daemon/settings.json.tmp.jq3qtN": No such file or directory (variant.c:1285)

...そして他の同様のエラーが発生しました。

したがって、トランスポートデーモンはwww-dataユーザーのホームパスを使用し、そこに設定ディレクトリを再作成しようとするようです。

なぜそんなことですか?転送のために古いデフォルト設定パスをどのように使用できますか?ユーザーのホームパスに依存する転送設定は表示されません。

追加の質問:サービスを実行するユーザーを設定する3つの構成ファイルの違いは何ですか?

答え1

Transmission-Daemonは、それを実行しているユーザーのホームフォルダに設定を保存します。デフォルトでは、ユーザーのtransmissio-daemonホームフォルダは次のとおりです。

/var/lib/transmission-daemon定義どおり/etc/passwd

Debian の settings.json ファイルは、 /var/lib/transmission-daemon/.config/transmission-daemon/ 次を指すポインタだけです。/etc/transmission-daemon/settings.json

ホームフォルダなので書き込みが可能です。発生するエラーは、転送が実行されているユーザーのホームフォルダに設定/統計を書き込めないために発生します。

しかし、最善のアプローチは、settings.jsonを使用してumask他の人が転送によって生成されたファイルにアクセスできるようにし、ダウンロードフォルダをWebサーバーがアクセスできる場所(おそらく/ var /フォルダ)に書き込むことでwwwを設定することです。転送権限)

ユースケースの詳細については、トランスポートユーザーを変更せずにニーズに合った設定を作成できます。

関連情報