Webを介してサーバー間でファイルをコピーする必要があります。私はそうするためにssh上でRSYNCを使用しています。問題は、ファイルがどこにあっても、ファイルを転送できる必要があるということです。
ユーザーrsyncとsermod -G root -a rsyncを作成して、両方のサーバーの任意の場所で読み取り/書き込みを行う権限を彼に付与しました。
転送中に、次のエラーが表示されます。
rsync: mkstemp "/root/.myFile.RDr2HY" failed: Permission denied (13)
何が起こっているのかわかりません。
編集:宛先フォルダーにルートグループへの書き込みアクセス権がないことがわかりました。このrsyncユーザーに100%のアクセスを許可するにはどうすればよいですか? uidを0に変更すると、rsyncが機能しなくなります。
これで、usermod -G root -a rsync
は、rsync
ユーザーをルートグループに追加しました。ルートグループは特別ではないため、これはほとんどのシステムではまったく効果がありません。ルートグループにいることがルートユーザーに特権を昇格させるために必要であるシステムがありますが、それだけでは十分ではありません(ルートグループはSudo
を使用できるユーザーのグループです。または同等の設定)。
セキュリティの観点から、ユーザーにファイルをどこにでも書き込む権限を与えることは、そのユーザーにroot権限を与えることとまったく同じです。 (ユーザーは、/bin/su
、/etc/passwd
、/usr/sbin/sshd
、または自分用のバックドアをセットアップできるようにする他のプログラムやデータベースを上書きできます。)
Sshを介して任意のファイルにアクセスする必要がある場合は、rootとしてsshログインを許可します。パスワード(またはランダムに生成された長いパスワード)ではなく、キー(もちろん慎重に保護する必要があります)だけを使用します。 /etc/sshd_config
に、
PermitRootLogin yes
任意のファイルアクセスを許可するもう1つの方法は、rsyncユーザーに、ファイルシステムのPOSIX ACLを介して適切な権限を付与することです。継承されたACLの簡単な要約を書きました ここ 。
ユーザーが任意のファイルに書き込むことを許可するという要件が正確である場合、セキュリティ上の懸念が大きくなる可能性があり、他の人が示唆しているように、ルートログインを許可する方が賢明かもしれません-セットアップをシンプルに保つことで時間を節約できます将来は。
ただし、実際には、システムのどこにでもファイルを配置する機能は必要ないのではないかと強く思います。その場合、実際にそれらを任意の数の場所に配置できるようにする必要がある場合は、POSIXACLが役立ちます。
たとえば、このメカニズムを介して/ etc/passwdを上書きできるようにする必要がある場合は、別の方法を検討する必要があります。アカウントを含む構成変更をプッシュする場合、 puppet または cfengine のような構成管理システムを使用すると、より良い時間を過ごすことができます。これらにより、リモートシステムにプッシュされる構成変更を指定できます。