
処理するには、一部のファイルをリモートホストに自動的に(スクリプト経由で)rsyncする必要があります。ただし、ユーザー、グループ、およびファイル権限を処理するには、ホスト全体で永続化する必要があります。
これは自動化されているため、パスワードを入力できません。 rsyncを実行しているユーザーのSSHキーがすでに存在している必要があります。ファイルの所有者はルートなので、スクリプトを所有者として実行することはできません(したがって、ルートSSHキーを保存できません)。したがって、スーパーユーザーとして実行することはできません。
また、ファイルの権限は440(root:groupImNotIn)です。
とりわけ、両方のシステムが本番段階にあるため、両方のホストのいずれかを変更すること(xattrsを開くことができず、setgidを使用できず、umaskを変更できないなど)は問題になりません。
これを行う方法はありますか?
答え1
これを達成する方法を見つけました。/etc/sudoers
受信側で<user> ALL=NOPASSWD:/usr/bin/rsync
パスワードのない機能を有効にするには、受信者を追加してください。sudo rsync
したがって、転送されたファイルのすべての権限/所有者/グループが保存されます。使用されるrsyncコマンドは次のとおりです。
rsync -aviL <file> <user>@<destination>:<directory> --rsync-path="sudo rsync"
以前のユーザーのためにSSHキーを保存すると、パスワードを入力したり、ルートSSH接続を確立したりすることなく、すべてのファイル転送が自動的に完了することがあります。
ただし、このアプローチはリモートスーパーユーザーrsyncにセキュリティ上の問題を引き起こします。