Разрешения NTFS для Windows 10 для учетной записи Azure AD

Я присоединился к Windows 10 в Azure Active Directory и выполнил вход, используя свой адрес электронной почты и пароль Azure AD.

whoami возвращается AzureAD\<Full Name> и разрешения NTFS для папки профиля пользователя также показывают владельца папки как AzureAD\<Full Name>, У пользователя есть папка с именем профиля Users\<Full Name>,

Однако я не могу выбрать этого пользователя вообще в Select a principal диалоговое окно, когда я хочу предоставить разрешения для других папок. Каков правильный синтаксис для пользователей Azure AD?

При использовании только учетных записей Azure AD учетные записи пользователей вообще отсутствуют. Local Users (в отличие от учетной записи Microsoft, которая связана с локальным пользователем).

4 ответа

Решение

Более новые версии показывают фактическое доменное имя, но та же проблема все еще существует. Вы можете использовать Powershell для установки разрешений.

    $dir = get-item -Path 'C:\users\jshelby\Desktop\testdir\'    
    $acl = $dir.GetAccessControl('Access')
    $username = 'domain\username'
    $AccessRights = New-Object System.Security.AccessControl.FileSystemAccessRule($Username,'Modify','ContainerInherit,ObjectInherit','None','Allow')
    $Acl.SetAccessRule($AccessRights)
    Set-Acl -path $Path -AclObject $Acl

Вы можете использовать этот короткий пример PowerShell, протестированный в Windows 10, сборка 1809, которая зарегистрирована в Azure Active Directory. Измените $path для вашей локальной папки, и для разрешения $ вы можете использовать любого пользователя Azure AD, но имя пользователя должно быть в формате AzureAD\upn (пример AzureAD\smith@company.com)

$path = "C:\myfolder"
$permission = "AzureAD\myuser@mydomain.com","FullControl","Allow"
(Get-Acl $path).SetAccessRule((New-Object System.Security.AccessControl.FileSystemAccessRule $permission)) | Set-Acl $path

В письме Иисуса есть опечатка.

Set-Acl : Cannot bind argument to parameter 'Path' because it is null.
At line:6 char:19
+     Set-Acl -path $Path -AclObject $Acl
+                   ~~~~~
    + CategoryInfo          : InvalidData: (:) [Set-Acl], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.SetAclCommand

Это обновленный скрипт:

    $dir = get-item -Path 'C:\users\jshelby\Desktop\testdir\'    
    $acl = $dir.GetAccessControl('Access')
    $username = 'domain\username'
    $AccessRights = New-Object System.Security.AccessControl.FileSystemAccessRule($Username,'Modify','ContainerInherit,ObjectInherit','None','Allow')
    $Acl.SetAccessRule($AccessRights)
    Set-Acl -path $dir -AclObject $Acl

Кроме того, я попробовал это сначала на PowerShell Core. $dir.GetAccessControl() похоже, что не существует в PowerShell Core, только Windows PowerShell.

Ответ @Hrvoje Kusulja имеет правильную концепцию, но содержит ошибку, поскольку не возвращает объект ACL, к которому он был вызван.

Исправление состоит в том, чтобы назначить ACL переменной, чтобы послеSetAccessRuleназывается, у нас все еще есть ссылка на него, чтобы перейти кSet-ACL.

      $path = "C:\myfolder"
$permission = "AzureAD\myuser@mydomain.com","FullControl","Allow"
$acl = (Get-Acl $path)
$acl.SetAccessRule((New-Object System.Security.AccessControl.FileSystemAccessRule $permission)) 
$acl | Set-Acl $path
Другие вопросы по тегам