Rsync - rsync ユーザーとその権限の設定

Rsync - rsync ユーザーとその権限の設定

2 つの Web サーバー間で rsync を設定します。プライマリ サーバーがクラッシュした場合に備えて、プライマリ サーバーのデータをセカンダリ サーバーにバックアップすることを目標としています。私の質問は、プライマリ サーバーに rsync 用のユーザー アカウントを設定することに関するものです。

明らかな理由から、ここでは「root」ユーザー アカウントを使用したくありません。そのため、rsync の目的のみに使用される別のアカウントを設定することを目指しています。私の理解では、このユーザーには、転送する必要があるすべてのファイル (Apache 構成、ユーザーの Linux ファイル、www データ) に対する読み取り権限が必要です。

このような権限を最適に設定するにはどうすればよいでしょうか? rsync ユーザーにルート権限を付与する必要がありますか? または、このようなバックアップ用のユーザーを作成するより安全な方法はありますか?

答え1

両方のサーバーを接続するネットワークが安全である場合 (たとえば、オフィスのローカル ネットワーク)、デーモン モードで 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/

次に、次のようなファイルを作成します/etc/rsyncd.secrets

backupuser:thisisasecretpassword

ファイルを root のみが読み取り可能にします。

# chown root /etc/rsyncd.secrets; chmod 400 /etc/rsyncd.secrets

ここで、rsync がデーモンとして起動されていることを確認する必要があります。これはディストリビューションによって異なりますが、Debian の場合は、行をに/etc/default/rsync変更して を実行します(systemd を実行している場合は を実行します)。RSYNC_ENABLERSYNC_ENABLE=true/etc/init.d/rsync startsystemctl enable rsync; systemctl start rsync

これで、プライマリ ホストで rsync を実行し、次のようにして、複製する必要があるものをセカンダリに送信できます。

# rsync -ai /var/www/ backupuser@secondary-host::all/var/www/

この場合、rsync は秘密のパスワードを要求します。

関連情報