Rsync - 设置 rsync 用户及其权限

Abd*_*el5 6 security rsync user-permissions

我将在两个网络服务器之间设置 rsync。我的目标是从我的主服务器上备份数据,以防主服务器崩溃。我的问题与在主服务器上为 rsync 目的设置用户帐户有关。

出于显而易见的原因,我不想在这里使用我的“root”用户帐户。因此,我的目标是设置另一个仅用于 rsync 目的的帐户。据我了解,该用户需要对我需要传输的所有文件(apache 配置、用户 linux 文件、www-data)具有读取权限。

如何最好地设置此类权限?我应该授予 rsync 用户 root 权限还是有任何更安全的方法来为此类备份创建用户?

wur*_*tel 4

如果连接两台服务器的网络是安全的(例如您办公室的本地网络),那么您可以在守护程序模式下使用 rsync 以 root 身份进行连接。这样您就不需要使用 ssh 来建立连接。

在辅助系统上,创建一个/etc/rsyncd.conf包含以下内容的文件:

[all]
  path = /
  read only = no
  uid = 0
  gid = 0
  hosts allow = primary-host
  auth users = backupuser
  secrets files = /etc/rsyncd.secrets
  exclude = /tmp/ /var/tmp/ /var/cache/ /proc/ /sys/ /dev/ /run/ /boot/
Run Code Online (Sandbox Code Playgroud)

现在创建一个文件,/etc/rsyncd.secrets例如:

backupuser:thisisasecretpassword
Run Code Online (Sandbox Code Playgroud)

使该文件只能由 root 读取:

# chown root /etc/rsyncd.secrets; chmod 400 /etc/rsyncd.secrets
Run Code Online (Sandbox Code Playgroud)

现在您需要确保 rsync 作为守护进程启动;这取决于您的发行版,对于 Debian,您可以编辑该行/etc/default/rsync并将其更改RSYNC_ENABLERSYNC_ENABLE=trueand run /etc/init.d/rsync start(如果正在运行 systemd,则运行systemctl enable rsync; systemctl start rsync)。

现在,您可以在主要主机上运行 rsync 并将需要复制的任何内容发送到辅助主机,例如:

# rsync -ai /var/www/ backupuser@secondary-host::all/var/www/
Run Code Online (Sandbox Code Playgroud)

在这种情况下,Rsync 会要求您提供秘密密码。