【问题标题】:Setting network share permissions on subdirectory with PowerShell使用 PowerShell 设置子目录的网络共享权限
【发布时间】:2018-11-22 23:17:10
【问题描述】:

我想设置一个网络共享,只授予对根目录的读取权限,但对其中的子目录授予读取/写入权限。

我可以手动执行此操作,但我希望能够使用 PowerShell 执行此操作。

\\myserver\MyShare           (READ access here for user TESTUSER)
\\myserver\MyShare\subfolder (READ/WRITE access here for user TESTUSER)

Windows 资源管理器中的手动步骤 - 打开文件夹属性对话框、“共享”选项卡、“共享...”按钮,然后我可以添加我的用户并设置权限。我可以对网络共享的根目录和“子文件夹”执行此操作。

我在 PowerShell 中管理的最接近的东西如下,它只设置了根:

New-SmbShare –Name MyShare –Path e:\MyShare -ReadAccess "Domain\TESTUSER"

但是,这似乎与文件夹属性对话框中显示的“高级共享”选项等效,该选项仅适用于设置新网络共享时,不适用于现有网络共享中的文件夹。当我运行此脚本时,TESTUSER 并未添加到简单的“共享...”对话框中的用户列表中,因此必须有另一种设置权限的方法。

我的问题:如何像 Windows 从文件夹属性上的“共享...”按钮一样使用 PowerShell 设置权限?

我使用的是 Windows Server 2012 R2。

【问题讨论】:

    标签: powershell permissions windows-server-2012 network-share


    【解决方案1】:

    共享权限适用于整个共享,这意味着它们会影响共享文件夹及其包含的所有内容。如果不将该子文件夹发布为不同的共享,则无法将不同的共享权限应用于子文件夹,即使这样,修改后的权限也只会在通过新共享访问子文件夹时生效,而不是在将其作为原始共享的子文件夹访问时生效.

    对于细粒度的访问控制,您必须使用文件系统 ACL。但是,如果通过共享权限将共享定义为只读,即使文件系统 ACL 允许,用户也将被拒绝写访问。

    由于这些限制,通常的做法是将共享权限设置为对所有人进行完全控制,并在文件系统级别进行整个权限处理。设置文件 ACL 最简单的方法仍然是 icacls 命令:

    icacls C:\path\to\shared_folder /grant "DOMAIN\testuser:(CI)(OI)RX"
    icacls C:\path\to\shared_folder\subfolder /grant "DOMAIN\testuser:(CI)(OI)M"
    

    您也可以在同一端使用Set-Acl,但它需要更多代码:

    function New-Ace($user, $permission) {
        New-Object Security.AccessControl.FileSystemAccessRule $user, $permission, 'ContainerInherit, ObjectInherit', 'None', 'Allow'
    }
    
    $acl = Get-Acl -LiteralPath 'C:\path\to\shared_folder'
    $acl.AddAccessRule((New-Ace 'DOMAIN\testuser' 'ReadOrExecute')
    Set-Acl -AclObject $acl -LiteralPath 'C:\path\to\shared_folder'
    
    $acl = Get-Acl -LiteralPath 'C:\path\to\shared_folder\subfolder'
    $acl.AddAccessRule((New-Ace 'DOMAIN\testuser' 'Modify'))
    Set-Acl -AclObject $acl -LiteralPath 'C:\path\to\shared_folder\subfolder'
    

    通过启用access-based enumeration,您可以确保用户只能看到他们实际有权访问的文件夹和文件(避免因尝试访问对象而导致“访问被拒绝”错误而混淆)。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-29
    • 1970-01-01
    • 1970-01-01
    • 2016-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多