我需要一些帮助来弄清楚正确的使用 systemd 完成我需要的方法。我感觉自己进退两难,不知道该往哪里走。这是浓缩的上下文:
我成功设置了systemd用户每晚运行备份脚本的单元,该脚本执行以下操作:
- 它使用我用户的 ssh 密钥来 ssh 到另一台机器
- 它调用 pass (即我的用户的密码存储)将密码发送到远程计算机,以获取远程上需要 sudo 的命令
- 它将一些数据从远程计算机同步到备份驱动器
这一切都非常有效。现在的问题是我还需要将一些数据本地同步到我的备份驱动器,但数据归 root 所有。除非我使用 sudo 运行脚本,否则 Rsync 会因权限被拒绝而失败。但问题是我不知道如何通过 systemd 用户单元自动使用 sudo- 调用 pass 似乎不起作用。
我在其他地方读到,我应该使用一个以 root 身份运行的普通 systemd 单元来完成我需要的任务,但问题是,作为用户单元运行时正在工作的所有其他东西在以 root 身份运行时都会中断,因为 root无权访问我的用户的 ssh 密钥或通行证存储。
TLDR:设置 systemd 单元的最佳方法是什么,它可以:1)执行需要访问我的 ssh 密钥和密码存储的命令,2)还需要提升权限的 rsync 数据,以及 3)在一个我不需要在键盘上输入用户密码的自动化方式?