为 systemd 服务设置 umask,但进程创建的文件仍使用默认值

为 systemd 服务设置 umask,但进程创建的文件仍使用默认值

这是 Transmission torrent 客户端的单元,它是从源代码编译和安装的。

/etc/systemd/system/transmission.service

[Unit]
Description=Start the Transmission daemon
After=network.target

[Service]
Type=simple
User=_transmission
ExecStart=/usr/local/bin/transmission-daemon --foreground
UMask=0002

[Install]
WantedBy=multi-user.target

我需要它使用 umask 0002,但它仍然使用默认值 0022 创建新文件。

_transmission是系统用户,但有主文件夹。其他所有选项均为默认选项。没有默认组(gid“nogroup”)。

我尝试过的事情

  • systemctl daemon-reload
  • systemctl restart transmission.service
  • 重启

系统信息

  • 硬件:Raspberry Pi 4B(arm64)
  • 操作系统:Raspberry Pi 操作系统(基于 Debian bookworm)
  • systemd 252

答案1

嗯,似乎 Transmission 在内部覆盖了 umask,因此 systemd 无法更改它。 Transmission 允许您使用配置选项更改 umask,该选项已记录在案这里

umask:字符串(默认值 = “022”)设置 Transmission 的文件模式创建掩码。有关更多信息,请参阅 umask(2) 手册页。


我也尝试对 Syncthing 进程执行相同的操作,并且 systemd 方法有效。它甚至记录在这里。但是,仅当您在文件夹上设置“忽略权限”时,它才会尊重 umask。

如果你在 Syncthing 客户端的文件夹设置中启用了忽略权限选项,那么你还需要在 [服务] 部分中添加行 UMask=0002(或你喜欢的任何其他 umask 设置)。[电子邮件保护]文件。

相关内容