Unix 文件特权系统与 Windows 的文件特权系统有何不同?

Nat*_*man 9 filesystems permissions ntfs

相关问题:Linux 文件系统/组织与 Windows 有何不同?

我有点熟悉权限在文件和目录方面的工作原理 - 每个条目都有一个ownerandgroup属性,代表文件的所有者和所有者所属的组(如果我错了,请纠正我)。

这与 Windows 上 NTFS 文件系统中的权限组织有何不同?Unix的权限系统相比NTFS有什么优势?

Law*_*ceC 17

NTFS 具有 Windows ACE。Unix 在每个文件上使用“模式位”。

在 NTFS 上,每个文件都可以有一个所有者,以及零个或多个 Windows 访问控制项 (ACE)。ACE 包含一个主体(用户和组是主体)、一组操作(读取、写入、执行等)以及这些操作是被允许还是被拒绝。文件可以有很多 ACE。Windows 中除文件之外的其他对象也可以具有 ACE,例如注册表项、打印机对象和其他内容。发生文件操作时会考虑所有 ACE。拒绝优先于允许。

Windows ACE 支持继承,您可以在其中为目录设置 ACE 并让它自动传播到较低级别的目录。

Unix 中的文件有一个拥有用户(owner)和一个拥有组(owner-group)。有三个固定的“委托人”,它们是所有者、拥有组的成员和其他所有人(又名世界)。对于每个主体,有三个“位”,涵盖读取、写入和执行能力。(这些对目录的含义与文件的含义不同,请参阅)。这些位决定谁可以执行什么操作。这称为文件模式并内置于文件中(没有单独的 ACE)。

大多数时候,您关心的是“world”权限,即,将“world”的所有三位设置为 0 意味着不是所有者或组所有者的任何人都无法对文件进行任何操作。Unix 权限仅适用于文件系统,但由于大多数对象显示为文件,因此您可以使用权限来限制对磁盘、打印机等的访问。Unix 权限更简单但更“粗略”。Unix 权限不支持继承,不会影响较低级别的目录,除了目录的执行权限(我认为)会导致新创建的文件承担目录的权限(但不影响当前创建的文件)。

传统上 Unix 文件有一个所有者和一个所有者组。Linux 的一些扩展以类似于 Windows 的方式将 ACE 添加到文件中。

Unix 的优势只是更简单的系统通常更容易理解和安全,而且速度更快,因为文件系统在打开文件时除了 inode 之外还不需要获取 ACE。

  • 这是目录的 _setgid_ 权限,它使文件继承所有者组,而不是权限。 (4认同)
  • @George:您需要记住的一件事是该组不是所有者的组,它是独立的。请参阅 chgrp(1)。 (3认同)
  • 现在大多数发行版都支持默认情况下编译到各种可用文件系统中的扩展访问控制列表 (ACL)。访问和修改这些所需的软件包名称通常称为`acl` 或`facl` 或类似名称,其中两个程序名为`setfacl` 和`getfacl`,用于修改或检索访问控制列表设置。 (3认同)

Bru*_*ger 7

完全不同的一件事是“可执行”是 Linux/Unix 下的权限,而不是基于文件的名称或扩展名。

这是相对于 Windows 的一个优势,因为在 Linux 上,您可以通过删除可执行权限来确保某些内容不会被执行。魔法扩展根本不重要。这可能是传统文件病毒在 Unix 和 Linux 上一无所获的原因之一。

  • Windows 实际上确实有一个可执行权限,尽管它们通过默认设置来达到目的。 (2认同)
  • @George,就像Unix一样(除非您想开始争论寻找shebang是否“高级”)。我只是想明确说明文件扩展名与安全模型无关。如果在 Windows 上将可执行文件标记为不可执行,则它具有与在 unix 上相同的效果。 (2认同)