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