Разрешения 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