authorized_keysで任意のディレクトリに制限付きのrsync(rrsync)スクリプトを許可します
バックアップの自動化 Webサーバー(WebServer)からローカルバックアップサーバー(BackupServer)にさまざまなディレクトリからデータをコピーするバックアップソリューションを実装したいと思います。バックアップは無人で実行する必要があるため、パスワードなしの秘密鍵による鍵ベースの認証を使用したいと思います。 特権Rsync バックアップしたいディレクトリは、特権ユーザーだけが読み取ることができます。rsyncを使用してファイルをコピーしたいと思います。専用のバックアップユーザーを作成し、visudoルールでパスワードの入力を求められることなく、ユーザーがsudoでrsyncを実行できるようにしました。 backup-user ALL = NOPASSWD: /usr/bin/rsync セキュリティに関する考慮事項 WebServerのauthorized_keysファイルにコマンドのリストを追加して、バックアップユーザーが実行できるコマンドを制限することで、セキュリティを向上させたいと思います。この投稿で述べたようにrrsyncをインストールしました。 command="/usr/bin/rrsync",no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-rsa AAAA134143NzaC1yc... Rrsyncはサブディレクトリを期待します 通常のrsyncとは対照的に、rrsyncは、このブログの投稿で説明されているように、承認されたキーファイルにサブディレクトリが提供されることを期待しています command="/usr/share/rsync/rrsync /var/backup/client1/",no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-rsa この制限は機能しますが、特定のディレクトリ、つまり/ var / backup / client1 /のみをバックアップできます rsyncコマンドでBackupServerからバックアップしたいディレクトリを提供したいと思います。rsyncとまったく同じようにrrsyncを使用する可能性はありますか? rsync -avze ssh --rsync-path='sudo rrsync' backupuser@111.222.33.44:/media/data /backups/Server/ 追加の説明 authorized_hostsのcommand = "..."部分は、このユーザーの実行可能なコマンドを提供されたものに正確に制限していることを認識していますが、通常のrsyncを使用して、次のようにして、バックアップするパスを指定できます。パラメータ: command="/usr/bin/rsync --server --sender -vlogDtpre.is . ${SSH_ORIGINAL_COMMAND//* \//\/}" これはrrsyncでは機能しません。 承認されたソリューション 技術的にはこの質問に対する明確な回答ではありませんが、Gillesによって投稿されたソリューションは非常に優れたアプローチだと思います。バックアップする実際のディレクトリのすべてのビューのルートフォルダを作成しました。このため、認証をrrsyncのみに安全に制限できます。 One time …