我在使用具有以下定义的 systemd 服务时遇到问题:
[Unit]
Description=Test
After=network.target
[Service]
WorkingDirectory=/home/testuser/testdir
User=testuser
Group=testuser
ProtectHome=true
...
直到几天前我更新了我的软件包,这工作得很好。然而现在,当 ProtectHome 设置为 true 时,该服务在尝试访问其运行所在用户的主目录时会被拒绝权限。
这是有意的吗(即 ProtectHome 拒绝访问每个主目录,甚至是您自己的主目录)?如果是的话,有什么办法可以将home下的特定目录列入白名单吗?将其添加到 ReadWriteDirectories 似乎不起作用。或者我应该将服务目录移到远离家的地方?
感谢您的帮助
飞鸟
答案1
来自systemd.exec 的手册页讨论ProtectHome=
:
如果为 true,则目录 /home/、/root 和 /run/user 对于该单元调用的进程来说将不可访问且为空。
您应该预期该服务无法访问主目录,即使该服务以拥有该目录的用户身份运行也是如此。
我不相信这种行为最近发生了变化,所以我不知道为什么它以前会起作用。也许您添加了设置但没有守护进程重新加载?