在用户空间中作为 systemd 服务运行时出现 rsync 权限问题

在用户空间中作为 systemd 服务运行时出现 rsync 权限问题

使用 Raspbian 11 通过 Ssh:d 连接到 Raspberry Pi 我正在尝试创建一个用户空间 systemd 服务单元和计时器来运行 rsync 命令,该命令将同步我以之登录的用户主文件夹下的两个文件夹。(.service 位于~/.config/systemd/user/并通过 启用systemctl --user enable (service file name)。如果我运行 rsync 命令(以登录用户身份运行且不使用 sudo),一切都正常。当我尝试运行提到的服务(systemctl --user start (service name)时,我得到了rsync: [sender] opendir "/home/theuser/samba/projfolder/afolder" failed: Permission denied (13)projfolder 文件夹中的每个子文件夹(以及 projfolder 中的隐藏文件)的相同结果。

其中一个子文件夹的权限为:drwxrws--- 2 sambaservant servantgroup 其中“sambaservant”是与负责我尝试复制的 samba 共享的 samba 用户绑定的本地用户。我登录的用户是“servantgroup”的成员(因此我认为我可以读取和 rsync 所述文件夹),sambaservant 也是如此。

我尝试运行的 rsync 命令是rsync -av /home/theuser/samba/projfolder/ /home/theuser/local_backup_copies/

该服务是:

[Unit]
Description=Sync Samba share proj folder to other folder

[Service]
Type=simple
ExecStart=rsync -av /home/theuser/samba/projfolder/ /home/theuser/local_backup_copies/
[Install]
WantedBy=default.target

如果源目录及其内容归我登录的用户所有(而不是我当前尝试复制的目录),则 rsync 命令作为服务成功执行。

为什么当我手动运行 rsync 命令(作为登录用户)时它会成功,而通过 systemd 用户空间服务运行时它会失败?

答案1

我遇到了完全相同的问题,但我没有解决方案,我想我可以根据以前的 SystemD 经验来回答这一部分:

How can the rsync command succeed when I run it manually (as the logged in user) and fail when run via a systemd user space service?

SystemD 在 LP 的无限中决定执行 cgroups/resource-containments/capability-limitations/etc.etc./etc。

应该问的问题是:How to turn off those problems

相关内容