ファイルシステムをマウントしてユーザーIDをマッピングする方法は?

ファイルシステムをマウントしてユーザーIDをマッピングする方法は?

ext4パーティションを正常にマウントできます。問題は、パーティション内のすべてのファイルがユーザーID 1000を持つユーザーの所有であることです。あるコンピュータでは、私のユーザーIDは1000ですが、別のコンピュータでは1010です。私のユーザー名は両方のコンピュータで同じですが、ファイルシステムがユーザー名ではなくユーザーIDを保存していることに気づきました。

次の方法でファイルの所有権を変更できます。

find /mnt/example -exec chown -h 1010 {} \;

ただし、この外付けドライブを別のコンピュータにマウントするときは、ファイルの所有権をもう1000に変更する必要があります。

私が望むのは、mount実際にファイルを変更する必要がないようにユーザーID 1000を1010にマップするオプションを提供することです。これを行う方法はありますか?

答え1

見てファイルシステムバインディングパック。 binfsは、既存のファイルシステム上のファイル権限、ファイル所有権などのさまざまな操作を実行できるFUSEファイルシステムです。

あなたは特に探しています- マップオプションファイルシステムバインディング:

--map=user1/user2:@group1/@group2:..., -o map=...
    Given a mapping user1/user2, all files owned by user1 are shown as owned by user2. When user2 creates files, they are chowned to user1 in the underlying directory. When files are chowned to user2, they are chowned to user1 in the underlying directory. Works similarly for groups.

    A single user or group may appear no more than once on the left and once on the right of a slash in the list of mappings. Currently, the options --force-user, --force-group, --mirror, --create-for-*, --chown-* and --chgrp-* override the corresponding behavior of this option.

    Requires mounting as root. 

したがって、ユーザーIDが1001のファイルをユーザーIDが1234のファイル/mnt/wrongにマップするには、/mnt/correct次のコマンドを実行します。

sudo bindfs --map=1001/1234 /mnt/wrong /mnt/correct

答え2

カーネルが5.12以上でファイルシステムをサポートしている場合(ext4は問題ありませんが、BTRFSサポートは5.15まで追加されていません)、次のものを使用できます。ID マッピングマウント機能から。使用する必要がありますマウントIDマッピングサポートするのに十分な新しいutil-linuxが表示されるまでプログラムを実行してください。X-mount.idmap機能はですmount

簡単な例は次のとおりです。使用mount-idmapped uidが1010のシステムにある場合は、次のコマンドを使用できます。 mount-idmapped --map-mount b:1000:1010:1 /mnt/example /mnt/example

2つのホストuidを同じ宛先uidにマップできないなど、いくつかの注意があります。したがって、binfsはより一般的なソリューションですが、これはあなたのユースケースに適しています。

答え3

あなたはそれを使用することができますファイルシステムバインディング。異なる uid/gid を使用して、ファイルシステムを別のマウントポイントにバインドできます。しかし、私はuidを変更して両方のシステムで同じになると思います。

関連情報