web-dev-qa-db-ja.com

Macbookのリモートバックアップを実行する際のRsnapshot権限の問題

ホームサーバーでrsnapshotを使用して、SSH経由でMacBookのバックアップを取ります。すべてが正しく構成され、機能していますが、権限に問題があります。

MacBookとホームサーバーに異なるユーザーがいるため、ホームサーバーにバックアップされたファイルは次のように保存されます。

-rw-------  16  501 dialout  1650 Jun 24 21:09 .bash_history
...

501は私のmacbookproのユーザーに関連付けられたIDであり、そのユーザーはホームサーバーに存在しないため、単にユーザーIDが表示されていると思います。ダイヤルアウトグループについてはよくわかりません。

これらのアクセス許可は、ネットワーク共有を介してバックアップファイルを参照しようとすると、アクセス許可の問題が発生することを意味します。

MacBookのユーザーとグループを永続化する代わりに、バックアップしたファイルをホームサーバーのユーザーとグループの下に保存することはできますか?もしそうなら、これに何か影響はありますか?

2
Timmy O'Mahony

これが起こっているように聞こえます:

  • rsnapshotは数値のuidとgidをMacからサーバーにコピーしています
  • macアカウントとサーバーアカウントのuidが異なります
  • コピーされたファイルのアクセス許可は、サーバーuidがそれらにアクセスすることを許可しません

これにはいくつかの可能な解決策があります。

解決策1:rsyncの--usermap--groupmapを使用する

rsnapshotはrsyncを使用してほとんどの作業を行い、最近のバージョンのrsyncにはuidとgidをマッピングするオプションがあります。これらのオプションをrsyncに渡すようにrsnapshotを構成できるかどうかはわかりませんが、可能であれば問題は解決します。

解決策2:ユーザーIDとグループIDを同期します。

ワークステーションとサーバーが同じOSを実行している場合、これはおそらく可能ですが、すでに異なる構成になっている場合は、変更する価値がない可能性があります。異なるOSを実行している場合は、互換性のないuid割り当てスキームがある可能性がありますが、ユーザーのuidのみを同期できる可能性があります。 (そのうちの1つがWindowsでない限り、それはまったく不可能です。)アカウントuidを変更しても、ファイルの所有者IDは変更されないため、別の手順として行う必要があります。ユーザーのuidを変更することは大したことではありませんが、サービスのuidを変更することは混乱する可能性があります。

解決策3:コピーステップを分離する

Rsnapshotを実行する前に、すべてを個別の手順としてサーバーにコピーする場合は、数値uidではなく文字列名を使用するプログラムを使用してコピーを作成できます。これにより、一致するユーザー名のuidが変換されます。 nison 、私が知っている唯一の双方向ファイル同期ツールはこれを行います。ほとんどのLinuxディストリビューションに含まれており(デフォルトではインストールされていません)、 MacPorts または App bundle としてmacosで利用できます。 scp (Windows以外のほとんどすべてにデフォルトで含まれ、インストールされている)を使用してファイルをコピーする場合、所有者は受信システムにログインしているユーザーになります。

解決策3:uid/gid変換ステップを追加する

Rsnapshotが終了した後、uid/gidを変更できます。 1つまたは2つのuidのみを気にする場合は、 この回答 からソリューションを適応させることができます。

find /your/rsynced/path -user 1000 -exec chown 505 {} \;
find /your/rsynced/path -user 1001 -exec chown 700 {} \;

これにより、uid/gidは修正されますが、変更されていないファイルのrsnapshotsハードリンクが壊れます。rsnapshotは、メタデータの変更など、何らかの方法で異なるファイルをハードリンクしません。所有者が異なるファイルや、タイムスタンプが異なるファイルをハードリンクすることはありません。 (これは、rsnapshotが利用するが変更しないrsyncの動作です。)

もちろん、ハードリンクをやり直すために別のステップを追加することもできます。

2
ShadSterling