为什么不设置FileSystemRights Synchronize权限?

时间:2016-02-22 07:53:51

标签: .net multithreading security synchronization ntfs

来自.Net开发背景并没有那么多(NTFS)文件系统安全方面的经验System.Security.AccessControl.FileSystemRights中的大多数权利对我都很清楚。

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

  

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

someone else解释:

  

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

所以我的问题是:

  1. 上述说明是否正确?
  2. 如果是,为什么设置同步权限(如果授予读取权限)?

1 个答案:

答案 0 :(得分:3)

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

  1. 是的,这是对的。引用微软"权限输入对话框"高级编辑权限对话框中的帮助屏幕:
  2.   

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

    1. 您无法 通过用户界面设置同步权限。它始终设置有其他权限。只有.Net API(也很可能是其他人),您可以选择不设置同步权。
    2. 这些是您可以在权限对话框中设置的粗略权限以及它们包含的FileSystemRights:

      • 完全控制(选择所有粗略权限):
        • FullControl(所有FileSystemRights,包括Synchronize)
      • 修改(还选择读取和执行,列出文件夹内容,读取,写入):
        • 修改
        • 同步
      • 阅读&执行(也选择列表文件夹内容,读取):
        • ReadAndExecute
        • 同步
      • 列出文件夹内容:
        • ReadAndExecute
        • 同步
      • 读:
        • 同步
      • 写:
        • 同步

      这些是您可以在高级权限对话框中设置的细化权限以及它们包含的FileSystemRights:

      • 完全控制:
        • FullControl(所有FileSystemRights,包括Synchronize)
      • 遍历文件夹/执行文件:
        • ExecuteFile
        • 同步
      • 列出文件夹/读取数据:
        • READDATA
        • 同步
      • 读取属性:
        • ReadAttributes
        • 同步
      • 阅读扩展属性:
        • ReadExtendedAttributes
        • 同步
      • 创建文件/写入数据:
        • CreateFiles
        • 同步
      • 创建文件夹/附加数据:
        • AppendData
        • 同步
      • 写属性:
        • WriteAttributes
        • 同步
      • 编写扩展属性:
        • WriteExtendedAttributes
        • 同步
      • 删除子文件夹和文件:
        • DeleteSubdirectoriesAndFiles
        • 同步
      • 删除:
        • 删除
        • 同步
      • 阅读权限:
        • ReadPermissions
        • 同步
      • 更改权限:
        • ChangePermissions
        • 同步
      • 取得所有权:
        • TakeOwnership
        • 同步

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

      • 读:
        • ReadPermissions
        • ReadAttributes
        • ReadExtendedAttributes
        • ListDirectory / READDATA
      • ReadAndExecute(Read + ExecuteFile):
        • ReadPermissions
        • ReadAttributes
        • ReadExtendedAttributes
        • ListDirectory / READDATA
        • ExecuteFile /导线
      • 写:
        • WriteAttributes
        • WriteExtendedAttributes
        • CreateDirectories / AppendData
        • CreateFiles /写数据
      • 修改(ReadAndExecute + Write + Delete):
        • ReadPermissions
        • ReadAttributes
        • ReadExtendedAttributes
        • ListDirectory / READDATA
        • ExecuteFile /导线
        • WriteAttributes
        • WriteExtendedAttributes
        • CreateDirectories / AppendData
        • CreateFiles /写数据
        • 删除
      • FullControl:包括所有。

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

      • ListDirectory,ReadData:1
      • CreateFiles,WriteData:2
      • CreateDirectories,AppendData:4
      • ExecuteFile,Traverse:32