題 有沒有辦法從其他Windows安裝中為用戶提供NTFS文件權限?


我正在嘗試設置文件權限,以便來自兩個Windows安裝的用戶可以從共享的NTFS硬盤訪問某些文件,而無需使用“Everyone”權限。

在安裝中,我可以獲得其本地用戶的權限,但我無法通過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的權限?


4
2017-08-05 10:30


起源


除非您能夠創建域,否則您無法實現。在Linux上也不可能。 Windows會尊重其他Windows安裝的權限。您也可以簡單地與其他安裝共享驅動器,一旦這樣做,您可以限制每個用戶的權限。 - Ramhound


答案:


我能夠找到這個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。

由於它的使用,這將需要PowerShell 3.0+ Get-Acl 和 Set-Acl


1
2017-08-10 17:56