Filesystems

跨兩個不同文件系統複製文件時會發生什麼

  • November 10, 2021

學習Linux核心中的文件系統後有一個問題,當跨兩個不同的文件系統複製文件時會發生什麼。

由於我們可以mount -t ntfs DEV_BLK MOUNT_POINT在 Linux 上掛載 NTFS,核心必須知道數據在磁碟中是如何組織的,所以如果我們嘗試將文件從 NTFS 複製到 ext4,核心應該處理數據、屬性、權限等。

但是 NTFS 和 ext4 使用不同的權限控制,Linux核心在創建dentry、inode等時給從NTFS複製的文件賦予777權限是預設行為嗎?

只是 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 繼承的。

引用自:https://unix.stackexchange.com/questions/676802