Filesystems
跨兩個不同文件系統複製文件時會發生什麼
學習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 繼承的。