我不知道为什么,但是 Linux 用户权限在 NTFS 文件系统上不起作用......无论如何,如果一个文件从 Windows 复制到 Ubuntu,Ubuntu 必须给他们一个所有权和用户权限......所以Ubuntu在哪里保存文件的用户权限?问题是,将文件从 Linux 发行版移动到另一个发行版不会更改权限。所以它肯定应该在文件里面。Ubuntu 会重写每个文件吗?
我不知道为什么,但是 Linux 用户权限在 NTFS 文件系统上不起作用......无论如何,如果一个文件从 Windows 复制到 Ubuntu,Ubuntu 必须给他们一个所有权和用户权限......所以Ubuntu在哪里保存文件的用户权限?问题是,将文件从 Linux 发行版移动到另一个发行版不会更改权限。所以它肯定应该在文件里面。Ubuntu 会重写每个文件吗?
在
ext
Linux 中使用的文件系统中,索引节点用于描述存储的文件。索引节点包含文件的属性及其数据块位置(这些是包含文件实际内容的块)。下面简要说明一个inode中存储的内容:索引节点编号 文件访问、修改和更改的时间戳 文件大小 权限 所有者组 数据块位置
因此,为了回答您的问题,Unix 将文件的权限存储在文件系统中的 inode 中,例如
ext4
.如果想查看一个文件的inode信息,可以使用
stat
命令:要指出您的问题:默认情况下,当您将文件从 Linux 发行版复制到另一个发行版时,不会复制权限。发生的情况是复制了数据块(实际内容),但没有复制所有其他属性。因此,例如,如果您将文件从内部硬盘驱动器复制到外部硬盘驱动器(均格式化为
ext4
),则外部硬盘驱动器上复制数据的所有者成为(我认为)执行复制命令的用户。如果您想保留文件的权限(和其他属性),则必须使用额外的标志,例如命令中的-p
(or--preserve
)cp
:mode
权限在哪里。使用诸如将-p
这些 inode 属性复制到新文件的选项。Windows 使用 FAT32 或 NTFS,它们是不理解索引节点的完全不同的文件系统。这就是为什么当您将某些内容从 Linux ( ) 复制
ext4
到 Windows(NTFS 或 FAT32)时,Windows 会将其自己的属性应用于该文件。当您在 Ubuntu 中挂载 NTFS 文件系统时,它会使用
umask
命令(或选项fmask
和dmask
infstab
)设置分区中所有内容的权限。当您将某些内容复制到该挂载的分区时,这些文件将采用umask
命令所需的任何内容,并且除非您使用新选项重新挂载整个分区,否则无法更改权限。有关详细信息,请在此处阅读 ntfs-3g 的联机帮助页:http: //linux.die.net/man/8/ntfs-3g。
Linux 通过名为 NTFS3G 的软件使用 NTFS(如果有兴趣,请谷歌了解详细信息)。Linux 和 NTFS 有完全不同的用户、组和文件权限的概念。这意味着在系统之间转换权限并不简单。
要将 NTFS 权限调整为 Linux 形式,NTFS3G 有 2 种可能性:(a) 忽略 NTFS 具有的内容并将所有文件和所有目录设置为相同的 umask;或 (b) 如果已完成用户映射,它会尝试猜测 Linux 权限的含义是由特定文件/目录的 NTFS 权限产生的。
在情况 (a) 中,Linux 提供的权限未存储在任何地方,任何更改它们的尝试都将被忽略。案例 (b) 在 NTFS 中读取和存储文件权限。