【问题标题】:Why not set FileSystemRights Synchronize permission?为什么不设置 FileSystemRights Synchronize 权限?
【发布时间】:2016-02-22 07:53:50
【问题描述】:

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

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

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

或者正如someone else 解释的那样:

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

所以我的问题是:

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

【问题讨论】:

    标签: .net multithreading security synchronization ntfs


    【解决方案1】:

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

    1. 是的,没错。从高级编辑权限对话框引用微软的“权限输入对话框”帮助屏幕:

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

    1. 您不能通过用户界面直接设置同步。它始终与其他权限一起设置。只有使用 .Net API(很可能还有其他 API),您才能选择不正确设置 Synchronize。

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

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

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

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

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

    • 阅读:
      • 读取权限
      • 读取属性
      • 读取扩展属性
      • ListDirectory/ReadData
    • ReadAndExecute(读取 + ExecuteFile):
      • 读取权限
      • 读取属性
      • 读取扩展属性
      • ListDirectory/ReadData
      • 执行文件/遍历
    • 写:
      • 写入属性
      • WriteExtendedAttributes
      • CreateDirectories/AppendData
      • 创建文件/写入数据
    • 修改(ReadAndExecute + Write + Delete):
      • 读取权限
      • 读取属性
      • 读取扩展属性
      • ListDirectory/ReadData
      • 执行文件/遍历
      • 写入属性
      • WriteExtendedAttributes
      • CreateDirectories/AppendData
      • 创建文件/写入数据
      • 删除
    • 完全控制:包括所有。

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

    • ListDirectory,ReadData:1
    • 创建文件,写入数据:2
    • 创建目录,附加数据:4
    • ExecuteFile,遍历:32

    【讨论】:

    • FileSystemRights 枚举 ?
    • @Kiquenet 是的,那是System.Security.AccessControl.FileSystemRights
    • 请注意,在 icacls 中,当您拒绝写入时,您也拒绝同步,这最终导致文件或文件夹不可读。而且没有办法通过 icacls 告诉你,虽然 cacls 会告诉你。
    • “为什么不设置同步权限(如果授予读取权限)?”问题尚未得到解答(假设它不仅涉及 Windows 文件/文件夹安全 UI,还涉及使用 Windows 文件权限 API 以编程方式执行此操作)。我一直看到授予读取访问权限时启用该权限。
    猜你喜欢
    • 1970-01-01
    • 2020-07-29
    • 2014-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    • 2020-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多