我正在运行archlinux,我使用systemd transmission.service下载torrents。我有一个ext4硬盘分区,在/var/lib/transmission上自动挂载fstab。我将所有已完成的下载保存在那里,并与本地网络上的samba服务器共享该目录。
问题是,每次计算机启动时,我都可以看到/var/lib/transmission并不对每个人都有读取权限。这意味着samba服务器无法读取到该目录的完整路径,并且最终无法使用samba客户端访问文件。启动后,我可以运行sudo chmod a+rX /var/lib/transmission,只有这样,目录才可以访问。transmission似乎在每次引导时都重写权限drwxr-x---。
是否有一种优雅的方法来编辑一些系统文件并修复它?也许使用sudo systemctl edit transmission.service?
发布于 2016-10-24 18:04:56
解决方案是将以下内容添加到/etc/systemd/system/multi-user.target.wants/transmission.service中,或者使用sudo systemctl edit transmission.service并编写:
[Service]
ExecStartPost=/bin/chmod a+rX /var/lib/transmissionsystemctl 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/中。
无论如何,解决此问题的另一种方法是编辑/usr/lib/tmpfiles.d/transmission.conf上的umask编号,如下所示:
d /var/lib/transmission 0755 transmission transmissionhttps://unix.stackexchange.com/questions/318585
复制相似问题