起動ごとにtransmission.serviceフォルダの権限が変更されました

起動ごとにtransmission.serviceフォルダの権限が変更されました

私は を実行しておりarchlinux、トレントのダウンロードには systemd を使用しています。で自動的にマウントされたハードディスク パーティションtransmission.serviceがあります。 完了したダウンロードはすべてそこに保存し、そのディレクトリをローカル ネットワーク上の samba サーバーと共有しています。ext4fstab/var/lib/transmission

問題は、コンピュータを起動するたびに、すべてのユーザーに読み取り権限がないことがわかることです/var/lib/transmission。つまり、Samba サーバーはそのディレクトリへのフルパスを読み取ることができず、最終的には Samba クライアントでファイルにアクセスできなくなります。起動後に実行できるようになり、その後にのみディレクトリにアクセスできます。起動するたびに権限が書き換えられるsudo chmod a+rX /var/lib/transmissionようです。transmissiondrwxr-x---

いくつかの systemd ファイルを編集して修正するエレガントな方法はありますか? おそらく、 を使用しますかsudo systemctl edit transmission.service?

答え1

解決策は/etc/systemd/system/multi-user.target.wants/transmission.service以下を追加することですまたは使用しsudo systemctl edit transmission.serviceて記述します:

[Service]
ExecStartPost=/bin/chmod a+rX /var/lib/transmission

systemctl editテキスト エディターが開き、パッケージ マネージャーによって提供された元のファイルを変更せずに、元のサービス ファイルのエントリを上書きできます。

これらを追加した後、再起動すると問題は解決しました。

注記:もっと多いかもしれない実用的systemctl editこのコマンドは、パッケージ マネージャーによって提供される元のサービス ファイルを編集しないように作成されたものと思われますので、使用しないでください。

注記:chmod配布パスに応じて実行可能ファイルへのパスを調整する必要があるかもしれません。

編集:

のディレクトリと非常によく似ていますが/var/run、systemd が起動のたびにこのディレクトリにこれらの権限があることを確認する理由がわかりました。その理由は、ここで最初に説明されています。https://serverfault.com/questions/824393/var-run-directory-creation-even-though-service-is-disabled/824394#824394

引用:

systemd には、 という新しい機能がありtmpfiles.d(5)、これを使用して、 の起動時に の外部にファイルまたはディレクトリを作成できます.serviceOpenvpnと はejabberd両方ともこれを使用しているため、 のディレクトリは/var/run起動時に開始されていなくても作成されます。

tmpfiles設定ファイルは以下に保存されます/usr/lib/tmpfiles.d/

とにかく、この問題を解決する別の方法は、umask 番号を/usr/lib/tmpfiles.d/transmission.conf次のように編集することです。

d /var/lib/transmission 0755 transmission transmission

関連情報