首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当跨两个不同的文件系统复制文件时会发生什么?

问当跨两个不同的文件系统复制文件时会发生什么?
EN

Unix & Linux用户
提问于 2021-11-09 18:30:28
回答 2查看 192关注 0票数 1

在学习了Linux内核中的文件系统之后,有一个问题,就是当跨两个不同的文件系统复制文件时会发生什么。

由于我们可以使用mount -t ntfs DEV_BLK MOUNT_POINT在Linux上挂载NTFS,所以内核必须知道数据是如何在磁盘中组织的,所以如果我们试图将文件从NTFS复制到ext4,内核应该处理数据、属性、权限等。

但是NTFS和ext4使用不同的权限控制,在创建dentry、inode等时,Linux内核是否默认对从NTFS复制的文件授予777权限?

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2021-11-09 19:00:34

只是Linux内核源代码4.19的一个摘录:

代码语言:javascript
复制
/* We do not support NTFS ACLs yet. */

然后将大部分权限相应地设置为这段注释良好的代码:

代码语言:javascript
复制
        /* 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
EN

Unix & Linux用户

发布于 2021-11-09 18:53:37

由于我们可以使用-t ntfs DEV_BLK MOUNT_POINT在Linux上挂载NTFS,所以内核必须知道数据是如何在磁盘中组织的,所以如果我们试图将文件从NTFS复制到ext4,内核应该处理数据、属性、权限等。

一点儿没错。任何文件系统都是这样的:需要一个文件系统驱动程序,以便操作系统知道如何读取和存储数据。

但是NTFS和ext4使用不同的权限控制,在创建dentry、inode等时,Linux内核是否默认对从NTFS复制的文件授予777权限?

不同的文件系统支持不同的访问控制语义是一个非常常见的现象;这就是为什么大多数文件系统驱动程序(和挂载助手)允许您在挂载时设置映射的原因!

因此:您可以在挂载时为ntfs / ntfs3g驱动程序配置它。man mount.ntfs-3g将告诉您它知道哪些选项,如何映射用户和权限等等。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/676802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档