我应该为 rsync 启用 root 帐户吗?

我应该为 rsync 启用 root 帐户吗?

我如何启用 root 帐户?我知道通常不建议这样做,但我想设置一个非交互式脚本来使用 rsync 备份我的服务器。我可以使用,--rsync-path="sudo rsync"但我需要以明文形式存储我的 sudo 密码,这似乎比启用 root 帐户更糟糕。

答案1

  1. mybackup在客户端和服务器上创建新的、独立的用户帐户
  2. 锁定这些账户的密码sudo passwd -l mybackup以防止直接登录
  3. 通过允许这些新帐户以 root 身份运行sudo非常特定的命令/usr/bin/rsync/ --some-long-command /from/here /to/thereNOPASSWD:/etc/sudoerssudo visudo
  4. 使用以下命令为本地到远程主机创建新的无密码 SSH 密钥sudo -u mybackup ssh-keygen
  5. 在一端或另一端添加以使用和键作为传输来sudo -u crontab -e运行远程rsyncssh

这样,唯一的命令以 root 身份运行是您明确允许的,并且唯一可以激活它的远程用户是已安装的 ssh 密钥对的另一半的持有者,因为它也有密码锁定,所以只有具有 sudo 访问权限的人或您设置的 crontab 才能激活它。

答案2

  1. 您可以进行编辑以允许运行该命令的任何用户(或所有用户)以无需密码的/etc/sudoers方式运行它(使用 rsync 可能有点危险)。root

  2. 你不能直接运行整个命令/脚本/其他东西吗root?我假设这将通过 cron 运行,因此只需root通过以下方式添加作业:

    sudo crontab -e
    

    注意:您可以通过将 cron 命令括在括号中bash -e "..."或直接在单独的脚本中执行来执行相当复杂的事情。假设它没有 setuid,如果root运行它(通过cron),它将以root这样的方式运行,这应该可以解决您的权限问题。

答案3

你可以(但不应该)给 root 用户设置密码

sudo passwd root

编辑:Setuid 位不适用于脚本。否则,您可以在备份程序上使用 setuid 位。

sudo chown root backup
sudo chmod u+s backup

也许,您甚至想将备份作为 cron 作业来运行?

相关内容