rsync-over-sshを使用して、複数のリモートターゲットマシンのバックアップを中央バックアップにインポートしたいと思います。
rootでこれを行うことができますが、これにより、バックアップが必要なマシンに書き込んだり、マシンから削除した誤ったrsyncコマンドを誤って実行したりする可能性があります。
ターゲットコンピュータに読み取り専用rootユーザーを設定できますか?
rsyncコマンドは、ターゲットシステム上のすべてのファイルを読み取ることはできますが、書き込むことはできません。
答え1
root以外の専用ユーザーとしてrsyncの読み取り側を実行しますが、次のようにします。能力 CAP_DAC_READ_SEARCH
。ユーザーはファイルシステム全体を見ることができる必要があり(もちろん)、/usr/bin/rsync
この機能を使用してコピーにアクセスする必要があります。私はLinuxの機能についてはよくわかりませんが、設定方法は次のとおりです。
cp /usr/bin/rsync /usr/local/sbin/rsync-for-backup
chown root.root /usr/local/sbin/rsync-for-backup
chmod 700 /usr/local/sbin/rsync-for-backup
setfacl -m user:backupuser:rx /usr/local/sbin/rsync-for-backup
setcap cap_dac_read_search+ep /usr/local/sbin/rsync-for-backup
rsyncが更新されるたびにコピーを更新することを忘れないでください。--rsync-path=/usr/local/sbin/rsync-for-backup
反対側に行きます。
(私はLinuxを想定しています。他のUnixバリアントには別のソリューションが必要です。)
他の潜在的なアプローチ:
- binfsソリューションのhttps://unix.stackexchange.com/a/91522ファイルの内容を読み取ることができますが、一部のメタデータが削除されます。バックアップする方法があるかどうかはわかりません。
- 限定的な SELinux ルールを使用して root として実行しても問題はありませんが、ルールが何であるかを尋ねないでください。
答え2
rsync
読み取り専用権限を持つリモートシステムのユーザーとして実行する必要があります。例えばrsync -a read_only_user@target_machine:/path/to/files /backup/location
rsync
このフラグで使用されている場合にのみファイルが削除されることは注目に値します--delete
。
rrsync
フラグを指定できるrsyncラッパーを見ることができます-ro
。
あなたのユースケースについても見ることをお勧めします。rsnapshot
ハードリンクを活用してディスク容量を節約しながら、中央バックアップに非常に便利なためです(https://rsnapshot.org)。