4

Я пытаюсь установить права доступа к файлам, чтобы пользователи из двух установок Windows могли получить доступ к определенным файлам с общего жесткого диска NTFS, не прибегая к предоставлению разрешений "Все".

Из установки я могу получить права для локального пользователя (ей), но не могу дать разрешения другому пользователю по SID:

icacls * /grant * S-1-5-21-3699620855-3856482933-2467390241-1001:R /T * S-1-5-21-3699620855-3856482933-2467390241-1001: сопоставления между именами учетных записей и идентификаторами безопасности не было сделанный.

Судя по всему Windows должна как-то иметь запись своего SID. Есть ли способ заставить его дать разрешение на "чужой" SID?

1 ответ1

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
}

Все кредиты идут в Настройки NTFS Permissions по SID в PowerShell Ремко Вейнена.

Для этого потребуется PowerShell 3.0+ из-за использования Get-Acl и Set-Acl .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .