2つの異なるファイルシステムにファイルをコピーするとどうなりますか?

2つの異なるファイルシステムにファイルをコピーするとどうなりますか?

Linuxカーネルのファイルシステムについて学んだ後、2つの異なるファイルシステム間でファイルがコピーされたときに何が起こるかについて質問があります。

LinuxでNTFSをマウントできるため、mount -t ntfs DEV_BLK MOUNT_POINTカーネルはディスク上のデータがどのように構成されているかを知る必要があります。したがって、NTFSからext4にファイルをコピーしようとすると、カーネルはデータ、属性、権限などを処理する必要があります。

ただし、NTFSとext4は異なる権限制御を使用します。 Linuxカーネルは、dentry、inodeなどを作成するときにNTFSからコピーされたファイルにデフォルトで777権限を付与しますか?

答え1

Linuxカーネルソースコード4.19から抜粋したものです。

/* We do not support NTFS ACLs yet. */

ほとんどの権限は、次のコメントコードに基づいて設定されます。

        /* Everyone gets all permissions. */
        vi->i_mode |= S_IRWXUGO;
        /* If read-only, no one gets write permissions. */
        if (IS_RDONLY(vi))
                vi->i_mode &= ~S_IWUGO;
        if (m->flags & MFT_RECORD_IS_DIRECTORY) {
                vi->i_mode |= S_IFDIR;
                /*
                 * Apply the directory permissions mask set in the mount
                 * options.
                 */
                vi->i_mode &= ~vol->dmask;
                /* Things break without this kludge! */
                if (vi->i_nlink > 1)
                        set_nlink(vi, 1);
        } else {
                vi->i_mode |= S_IFREG;
                /* Apply the file permissions mask set in the mount options. */
                vi->i_mode &= ~vol->fmask;
        }

つまり、ファイルシステムから継承されたACL権限ではなく、主にマウントオプションの権限です。

答え2

mount -t ntfs DEV_BLK MOUNT_POINTを使用してLinux上でNTFSをマウントできるため、カーネルはデータがディスク上でどのように構成されているかを知る必要があります。したがって、NTFSからext4にファイルをコピーしようとすると、カーネルはデータ、属性、権限、その他。

まさに。状況はこれですどのファイルシステム:オペレーティングシステムがデータを読み書きする方法を知るために、ファイルシステムドライバが必要です。

ただし、NTFSとext4は異なる権限制御を使用します。 Linuxカーネルは、dentry、inodeなどを作成するときにNTFSからコピーされたファイルにデフォルトで777権限を付与しますか?

異なるファイルシステムが異なるアクセス制御セマンティクスをサポートすることは非常に一般的な現象です。これが、ほとんどのファイルシステムドライバ(およびインストールアシスタント)がインストール時にマッピングを設定できるようにする理由です。

したがって、インストール時に ntfs/ntfs3g ドライバ用に設定できます。man mount.ntfs-3g知っているオプション、ユーザー、権限のマッピング方法などを教えてくれます。

関連情報