Ubuntu在哪里保存文件的用户权限?

我不知道为什么但Linux用户权限不能在NTFS文件系统上运行…无论如何,如果一个文件从Windows复制到Ubuntu,Ubuntu必须给他们一个所有权和用户权限..所以Ubuntu在哪里保存文件的用户权限? 问题是,将文件从Linux发行版移动到另一个发行版不会更改权限。 所以它应该在文件内部肯定。 Ubuntu会重写每个文件吗?

Linux通过名为NTFS3G的软件使用NTFS(谷歌如有兴趣,请参阅详情)。 Linux和NTFS具有完全不同的用户,组和文件权限概念。 这意味着在系统之间转换权限并不简单。

要将NTFS权限调整为Linux格式,NTFS3G有两种可能:(a)忽略NTFS具有的内容,并将所有文件和所有目录设置为相同的umasks; 或者(b)如果完成了用户映射,它会尝试猜测特权文件/目录的NTFS权限导致Linux权限的含义。

如果(a)Linux提供的权限未存储在任何地方,则忽略任何更改它们的尝试。 情况(b)在NTFS中读取和存储文件权限。

在Linux中使用的ext文件系统中, inode用于描述存储的文件。 inode包含文件的属性及其数据块位置(这些是包含文件实际内容的块)。 以下是inode中存储的内容:

Inode编号文件访问,修改和更改的时间戳文件大小权限所有者组数据块位置

因此,为了回答您的问题,Unix将文件的权限存储在其inode中,该文件系统位于文件系统中,例如ext4

如果要查看文件的inode信息,可以使用stat命令:

 $ stat /bin/bash File: '/bin/bash' Size: 635933 Blocks: 624 IO Block: 65536 regular file Device: 2e208854h/773883988d Inode: 281474976901122 Links: 1 Access: (0755/-rwxr-xr-x) Uid: ( 1000/ Alaa) Gid: ( 513/ None) Access: 2014-10-18 13:45:13.375853300 -0400 Modify: 2014-10-08 16:54:16.000000000 -0400 Change: 2014-10-18 13:45:13.438253400 -0400 Birth: 2014-10-18 13:45:13.375853300 -0400 

要指出问题中的某些内容:默认情况下,将文件从Linux发行版复制到另一个发行版时, 不会复制权限。 发生的是复制数据块(实际内容),但不复制所有其他属性。 因此,例如,如果要将文件从内部复制到外部硬盘驱动器(格式化为ext4 ),则外部硬盘驱动器上复制数据的所有者将成为(我认为)执行复制命令的用户。 如果要保留文件的权限(和其他属性),则必须在cp命令中使用额外标志,例如-p (或--preserve ):

  -p same as --preserve=mode,ownership,timestamps --preserve[=ATTR_LIST] preserve the specified attributes (default: mode,owner- ship,timestamps), if possible additional attributes: context, links, xattr, all 

其中mode是权限。 使用-p等选项将这些inode属性复制到新文件。

Windows使用FAT32或NTFS,它们是完全不同的文件系统,不了解inode。 这就是为什么当您将Linux( ext4 )中的内容复制到Windows(NTFS或FAT32)中时,Windows会将自己的属性应用于该文件。

在Ubuntu中挂载NTFS文件系统时,它使用umask命令(或fstab fmaskdmask选项) fmask分区中所有内容的权限。 当您将某些内容复制到该已安装的分区时,这些文件将采用umask命令所需的任何内容,并且除非使用新选项重新安装整个分区,否则无法更改权限。

有关更多信息,请阅读ntfs-3g的联机帮助页: http : //linux.die.net/man/8/ntfs-3g 。