サーバーでroot_squashが有効になっていても、ルートがNFSディレクトリ内のすべてのファイルを読み取ることを許可する

サーバーでroot_squashが有効になっていても、ルートがNFSディレクトリ内のすべてのファイルを読み取ることを許可する

複数のユーザーが使用および制御できないNFSサーバーでホストされているNFSディレクトリがあります。

私のクライアントシステムでNFSディレクトリの内容をバックアップしたいと思います。私の最初の試みは、クライアントコンピュータにrootとしてログインしてすべてのファイルを圧縮することでした。ただし、NFSサーバーはrootを匿名ユーザー(サーバーのroot_squashオプション)にマップして一部のファイルを読み取ることができないため、許可エラーが原因で失敗します。

それでは、そのNFSディレクトリ内のすべてのファイルをどのようにバックアップしますか?つまり、この共有NFSディレクトリにあるすべてのファイルをどのように読み取ることができますか?私はNFSサーバーを制御できず、no_root_squashを使用するように構成することもできません。

これで、このセキュリティ制限をバイパスできることがわかります。私のクライアントコンピュータで正しいuidを持つ新しいユーザーを作成するには、そのユーザーにsuを送信してからこのファイルを読むことができます。クライアントシステムに対するroot権限があるため、これを簡単に実行できます。 NFSサーバーは私のクライアントシステムを信頼します。私のクライアントシステムに複数の偽のユーザーIDを作成し、それらの間を行き来する必要があるため、これは面倒で面倒な作業になります。ただし、これは原則として、ルートがNFSディレクトリ内のすべてのファイルを読み取ることができることを証明します。

私の質問は:クライアントコンピュータへのrootアクセス権を持っていますが、NFSサーバーまたはその構成を制御できないため、このNFSディレクトリ内のすべてのエントリをバックアップできるように整理するよりきれいで簡単な方法はありますか?コントロールできますか?


制限事項:他のNFSサーバーに切り替えることはできません。私は現在NFSサーバーの設定を制御しません。すべてのユーザーの構成変更や他のすべてのユーザーのさらなる努力が必要なソリューションは実用的ではありません。不要なソリューションを探しています。また私の立場では、多くの努力が必要でした(すべての関連ユーザーを探して、偽のuidを作成し、各ユーザーを訴え、複数のタールボールを作成し、何とかタールボールをマージするために複雑なスクリプトを書く必要があるのは痛いようです) )。

ベストアンサー1

すべてのユーザーに、「root」アカウントが読むことができるように、デフォルトの権限を「others = read(file)」と「others = read + execute(directory)」に設定する必要があります。

NFSサーバープロバイダを許可された場所に変更できますno_root_squash

クライアントシステムで「偽」のユーザーIDセットを作成し、それを繰り返して、find /mnt/NFS -user "$FAKE_USERID" ... | tar --no-recursion --files-from=-各アカウントに対して同様の操作を実行できます。これにより、複数のタールボールが作成されますが、重複するバックアップを回避できます(findファイルを所有者ごとに分割し、各ファイルがそのファイルを所有しているユーザーのタールボールにのみ表示されるようにします)。

おすすめ記事