有没有办法向其他 Windows 安装的用户授予 NTFS 文件权限?

有没有办法向其他 Windows 安装的用户授予 NTFS 文件权限?

我正在尝试设置文件权限,以便来自两个 Windows 安装的用户可以从共享 NTFS 硬盘访问某些文件,而无需授予“所有人”权限。

在安装中,我可以获取其本地用户的权限,但是无法通过 SID 向其他用户授予权限:

icacls * /grant *S-1-5-21-3699620855-3856482933-2467390241-1001:R /T *S-1-5-21-3699620855-3856482933-2467390241-1001: 未完成帐户名和安全 ID 之间的映射。

显然,Windows 必须以某种方式记录 SID。有没有办法强制它向“外部”SID 授予权限?

答案1

我能够找到这个 powershell 函数,它声称可以完成你想要的操作:

function SetNTFSPermissionsBySid([string]$directory, [System.DirectoryServices.DirectoryEntry]$objAD)
{
    # Convert byte array sid to sid string
    $sID = New-Object System.Security.Principal.SecurityIdentifier $objAD.objectsid[0],0

    # Inheritance This Folder, Subfolders and Files)
    $inherit = [system.security.accesscontrol.InheritanceFlags]"ContainerInherit, ObjectInherit"
    $propagation = [system.security.accesscontrol.PropagationFlags]"None"

    # Retrieve the ACL
    $aCL = Get-Acl $directory

    # Create Ace
    $accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($sID, "Modify", $inherit, $propagation, "Allow")

    # Add Ace to Acl    
    $aCL.AddAccessRule($accessrule)

    # Set Acl to the directory
    Set-Acl -aclobject $aCL -path $directory
}

所有功劳归于在 PowerShell 中通过 SID 设置 NTFS 权限作者:Remko Weijnen。

由于使用Get-Acl和,因此需要 PowerShell 3.0+ Set-Acl

相关内容