Transmission.service 資料夾權限每次啟動時都會更改

Transmission.service 資料夾權限每次啟動時都會更改

我正在運行archlinux並使用 systemdtransmission.service下載種子。我有一個自動安裝的ext4硬碟分割區。我將所有已完成的下載保存在那裡,並與本地網路上的 samba 伺服器共用該目錄。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

相關內容