web-dev-qa-db-ja.com

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

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

明らかな理由により、ここでは「root」ユーザーアカウントを使用したくありません。したがって、rsyncの目的でのみ使用される別のアカウントをセットアップすることを目指しています。私が理解しているように、このユーザーは、転送する必要があるすべてのファイル(Apache構成、ユーザーLinuxファイル、www-data)に対する読み取り許可が必要です。

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

3
Abdel5

両方のサーバーを接続するネットワークが安全である場合(オフィスのローカルネットワークなど)、デーモンモードで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を編集してRSYNC_ENABLE行をRSYNC_ENABLE=trueに変更し、/etc/init.d/rsync startを実行します(systemdを実行している場合はsystemctl enable rsync; systemctl start rsyncを実行します)。

これで、プライマリホストでrsyncを実行し、レプリケートする必要があるものをセカンダリに送信できます。たとえば、次のようにします。

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

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

2
wurtel