
私は を実行しておりarchlinux
、トレントのダウンロードには systemd を使用しています。で自動的にマウントされたハードディスク パーティションtransmission.service
があります。 完了したダウンロードはすべてそこに保存し、そのディレクトリをローカル ネットワーク上の samba サーバーと共有しています。ext4
fstab
/var/lib/transmission
問題は、コンピュータを起動するたびに、すべてのユーザーに読み取り権限がないことがわかることです/var/lib/transmission
。つまり、Samba サーバーはそのディレクトリへのフルパスを読み取ることができず、最終的には Samba クライアントでファイルにアクセスできなくなります。起動後に実行できるようになり、その後にのみディレクトリにアクセスできます。起動するたびに権限が書き換えられるsudo chmod a+rX /var/lib/transmission
ようです。transmission
drwxr-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)
、これを使用して、 の起動時に の外部にファイルまたはディレクトリを作成できます.service
。Openvpn
と はejabberd
両方ともこれを使用しているため、 のディレクトリは/var/run
起動時に開始されていなくても作成されます。tmpfiles設定ファイルは以下に保存されます
/usr/lib/tmpfiles.d/
とにかく、この問題を解決する別の方法は、umask 番号を/usr/lib/tmpfiles.d/transmission.conf
次のように編集することです。
d /var/lib/transmission 0755 transmission transmission