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

相关内容