为什么不设置FileSystemRights Synchronize权限?

问题描述 投票:0回答:1

来自 .Net 开发背景,在 (NTFS) 文件系统安全方面没有太多经验,

System.Security.AccessControl.FileSystemRights
中的大部分权利对我来说都非常清楚。

但是,

FileSystemRights.Synchronize
是一个例外。来自文档:

指定应用程序是否可以等待文件句柄 与 I/O 操作的完成同步。

或者正如其他人所解释的:

同步权限允许或拒绝不同线程等待 在文件或文件夹的句柄上并与另一个同步 可能发出信号的线程。此权限仅适用于 多线程、多进程程序。

所以我的问题是:

  1. 以上说明是否正确?
  2. 如果是,为什么设置同步权限(如果授予读取访问权限)?
.net multithreading security synchronization ntfs
1个回答
6
投票

在做了一些研究后回答我自己的问题:

  1. 是的,这是正确的。引用高级编辑权限对话框中 Microsoft 的“权限输入对话框”帮助屏幕:

[同步] 允许或拒绝不同的线程等待句柄 文件或文件夹并与可能的另一个线程同步 发出信号。该权限仅适用于多线程、多进程 程序。

  1. 您不能通过用户界面设置同步。它总是与其他权利一起设置。仅使用 .Net API(以及很可能的其他 API),您可以选择不设置同步权限。

这些是您可以在权限对话框中设置的粗略权限,它们包括:

  • 完全控制(选择所有粗略权限):
    • 完全控制(所有文件系统权限,包括同步)
  • 修改(也选择读取和执行、列出文件夹内容、读取、写入):
    • 修改
    • 同步
  • 读取并执行(也选择“列出文件夹内容”、“读取”):
    • 读取并执行
    • 同步
  • 列出文件夹内容:
    • 读取并执行
    • 同步
  • 阅读:
    • 阅读
    • 同步
  • 写:
    • 同步

这些是您可以在高级权限对话框中设置的细化权限,其中包括 FileSystemRights:

  • 完全控制:
    • 完全控制(所有文件系统权限,包括同步)
  • 遍历文件夹/执行文件:
    • 执行文件
    • 同步
  • 列出文件夹/读取数据:
    • 读取数据
    • 同步
  • 读取属性:
    • 读取属性
    • 同步
  • 读取扩展属性:
    • 读取扩展属性
    • 同步
  • 创建文件/写入数据:
    • 创建文件
    • 同步
  • 创建文件夹/追加数据:
    • 追加数据
    • 同步
  • 写入属性:
    • 写入属性
    • 同步
  • 写入扩展属性:
    • 写入扩展属性
    • 同步
  • 删除子文件夹和文件:
    • 删除子目录和文件
    • 同步
  • 删除:
    • 删除
    • 同步
  • 读取权限:
    • 读取权限
    • 同步
  • 更改权限:
    • 更改权限
    • 同步
  • 取得所有权:
    • 取得所有权
    • 同步

请注意,有一些 FileSystemRights 由于其位掩码而包含其他权限。这些对应于您可以在粗略权限对话框中设置的权限。 FileSystemRights 值及其包含的其他值:

  • 阅读:
    • 读取权限
    • 读取属性
    • 读取扩展属性
    • 列表目录/读取数据
  • 读取并执行(读取+执行文件):
    • 读取权限
    • 读取属性
    • 读取扩展属性
    • 列表目录/读取数据
    • 执行文件/遍历
  • 写:
    • 写入属性
    • 写入扩展属性
    • 创建目录/追加数据
    • 创建文件/写入数据
  • 修改(读取并执行+写入+删除):
    • 读取权限
    • 读取属性
    • 读取扩展属性
    • 列表目录/读取数据
    • 执行文件/遍历
    • 写入属性
    • 写入扩展属性
    • 创建目录/追加数据
    • 创建文件/写入数据
    • 删除
  • 完全控制:包括全部。

还有一些 FileSystemRights 共享相同的值并且可以互换使用。他们是:

  • 列表目录,读取数据:1
  • 创建文件,写入数据:2
  • 创建目录,追加数据:4
  • 执行文件,遍历:32
© www.soinside.com 2019 - 2024. All rights reserved.