【问题标题】:Wrong ACL information in PowerShellPowerShell 中的 ACL 信息错误
【发布时间】:2014-03-20 18:45:29
【问题描述】:

我无法通过 Windows7 中的 PowerShell 获取共享文件夹的访问列表(不是 NTFS 权限!)。 我为一组用户共享了一个文件夹,但对于其中一个用户(us10151),我通过文件共享对话框拒绝访问,并通过 NTFS 权限对话框窗口允许访问。用户无法打开此文件夹,没关系。 但是当我试图读取这个文件夹的权限时,我没有找到任何拒绝访问的记录。所以,找这个(我也有截图,但是不能加):

**icacls.exe \\pc00001\intel**
\\pc00001\intel NT AUTHORITY\SYSTEM:(OI)(CI)(F)
                tstdmn\us00001:(OI)(CI)(RX)
                tstdmn\Domain Users:(OI)(CI)(M)
                tstdmn\us10151:(OI)(CI)(RX)
                tstdmn\us00002:(OI)(CI)(F)
                BUILTIN\Administrators:(OI)(CI)(F)

**cacls.exe \\pc00001\intel**
 c:\Intel NT AUTHORITY\SYSTEM:(OI)(CI)F 
          tstdmn\us00001:(OI)(CI)R 
          tstdmn\Domain Users:(OI)(CI)C 
          tstdmn\us10151:(OI)(CI)R 
          tstdmn\us00002:(OI)(CI)F 
          BUILTIN\Administrators:(OI)(CI)F

**Get-Acl \\pc00001\intel**
Path   : Microsoft.PowerShell.Core\FileSystem::\\pc00001\intel
Owner  : BUILTIN\Administrators
Group  : pc00001\None
Access : NT AUTHORITY\SYSTEM Allow  FullControl
         BUILTIN\Administrators Allow  FullControl
         tstdmn\Domain Users Allow  Modify, Synchronize
         tstdmn\us00001 Allow  ReadAndExecute, Synchronize
         tstdmn\us10151 Allow  ReadAndExecute, Synchronize
         tstdmn\us00002 Allow  FullControl
Audit  : 
Sddl   : <...>

怎么了?

【问题讨论】:

    标签: powershell acl file-sharing


    【解决方案1】:

    共享 ACL 是在 share 上定义的,而不是在 文件夹 上。 icaclscaclsGet-Acl 返回后者的权限。使用 WMI 枚举共享权限:

    $permissions = @{
      2032127 = 'F'
      1245631 = 'M'
      1179817 = 'RX'
    }
    
    $type = @{
      0 = 'Allow'
      1 = 'Deny'
      2 = 'Audit'
    }
    
    gwmi Win32_Share -Filter 'Type=0' | % {
      "{0}:`t{1}" -f $_.Name, $_.Path
      gwmi Win32_LogicalShareSecuritySetting -Filter "Name='$($_.Name)'" | % {
        $_.GetSecurityDescriptor().Descriptor.DACL | % {
          "`t{0} {1} {2}" -f $_.Trustee.Name, $type[[int]$_.AceType],
            $permissions[[int]$_.AccessMask]
        }
      }
    }
    

    过滤器Type=0 禁止管理共享。

    【讨论】:

    • 不起作用 :( Intel: C:\Intel us10151 F 大家 F 管理员 F
    • @user3443419 它工作得很好。我只是没有在输出中包含 ACE 类型。
    • 哦,是的!就是这样!工作正常!
    【解决方案2】:

    所有三个命令都向您显示共享指向的文件位置的 NTFS 权限,您需要一个工具来向您显示共享本身的 ACL。

    SubinACL 就是这样一种工具。

    .\subinacl.exe /share \\pc00001\intel /display
    

    【讨论】:

    • 谢谢,它可以工作,但我不想使用任何外部软件组件。以及如何捕捉输出数据?
    猜你喜欢
    • 2020-10-06
    • 1970-01-01
    • 2020-05-13
    • 1970-01-01
    • 1970-01-01
    • 2013-01-02
    • 1970-01-01
    • 1970-01-01
    • 2020-09-28
    相关资源
    最近更新 更多