0

我正在从 osx 10.6.8 工作站将 rsync 作为 LaunchDaemon 运行,以将数据备份到 Ubuntu 11.1 服务器。由于我将 plist 文件放在 /Library/LaunchDaemons 中,因此它以 root 身份运行。不幸的是,它失败了,因为该命令需要服务器的 root 密码。当我使用自己作为用户运行它时,rsync 使用我在两台机器之间为我的帐户设置的 ssh 密钥,但不幸的是,它无法在我的 osX 机器上构建完整的文件列表,因为我没有列出的权限其他用户的目录。

我可以看到几种可能性,但我都不知道该怎么做:

-1- 在 osx 上,我怎样才能给自己列出其他用户目录的权限,以便我可以在自己的用户名下运行守护程序?
或者
-2- 如果我以 root 身份运行 rsync 守护进程,我可以安全地在两台机器的 root 帐户之间设置 ssh 密钥吗?或者,我可以以相对安全的方式自动将密码提供给守护程序作业吗?

4

2 回答 2

0

I see two easy possibilities for using your key under the root account:

  1. Copy your ssh key into the root account's ssh directory (/var/root/.ssh).
  2. Specify your ssh key explicitly in the ssh command, something like this:

    <key>ProgramArguments</key>
    <array>
        <string>/usr/bin/rsync</string>
        <string>-i</string>
        <string>/Users/thomashollier/.ssh/id_rsa</string>
        <string>...etc...</string>
    <array>
    
于 2013-01-28T20:20:02.450 回答
0

谢谢你的提示。我将我的密钥复制到服务器的正确位置以获取根 ssh 密钥。我能够在命令行上从我的 osX 机器 ssh 和 rsync 到服务器,但不能直接从我的 launchDaemon。命令行上的 rsync 命令需要 -e "ssh -i /path/to/my/key/id_dsa" 参数,除了给它一个 bash 命令之外,我还没有弄清楚如何在 plist 文件中包含这些引号如下:

<key>ProgramArguments</key>
<array>
    <string>/bin/bash</string>
    <string>-c</string>
    <string>/usr/bin/rsync -avz /Users/myusername/Documents -e "ssh -i /Users/myusername/.ssh/id_dsa" server:/media/Backup/backup/</string>
</array>
于 2013-01-29T07:19:24.503 回答