Set-Acl

파일 또는 레지스트리 키와 같은 지정된 항목의 보안 설명자를 변경합니다.

Syntax

Set-Acl
   [-Path] <String[]>
   [-AclObject] <Object>
   [-ClearCentralAccessPolicy]
   [-Passthru]
   [-Filter <String>]
   [-Include <String[]>]
   [-Exclude <String[]>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
Set-Acl
   [-InputObject] <PSObject>
   [-AclObject] <Object>
   [-Passthru]
   [-Filter <String>]
   [-Include <String[]>]
   [-Exclude <String[]>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
Set-Acl
   -LiteralPath <String[]>
   [-AclObject] <Object>
   [-ClearCentralAccessPolicy]
   [-Passthru]
   [-Filter <String>]
   [-Include <String[]>]
   [-Exclude <String[]>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]

Description

이 cmdlet은 Windows 플랫폼에서만 사용할 수 있습니다.

cmdlet은 Set-Acl 사용자가 제공하는 보안 설명자의 값과 일치하도록 파일 또는 레지스트리 키와 같은 지정된 항목의 보안 설명자를 변경합니다.

사용Set-Acl하려면 Path 또는 InputObject 매개 변수를 사용하여 변경하려는 보안 설명자를 가진 항목을 식별합니다. 그런 다음 AclObject 또는 SecurityDescriptor 매개 변수를 사용하여 적용할 값이 있는 보안 설명자를 제공합니다. Set-Acl 는 제공된 보안 설명자를 적용합니다. AclObject 매개 변수의 값을 모델로 사용하고 항목의 보안 설명자의 값을 AclObject 매개 변수의 값과 일치하도록 변경합니다.

예제

예제 1: 한 파일에서 다른 파일로 보안 설명자 복사

$DogACL = Get-Acl -Path "C:\Dog.txt"
Set-Acl -Path "C:\Cat.txt" -AclObject $DogACL

이 명령은 Dog.txt 파일의 보안 설명자 값을 Cat.txt 파일의 보안 설명자로 복사합니다. 명령이 완료되면 Dog.txt 및 Cat.txt 파일의 보안 설명자가 동일합니다.

첫 번째 명령은 cmdlet을 Get-Acl 사용하여 Dog.txt 파일의 보안 설명자를 가져옵니다. 대입 연산자(=)는 보안 설명자를 $DogACL 변수의 값에 저장합니다.

두 번째 명령은 Cat.txt ACL의 값을 의 값$DogACL으로 변경하는 데 사용합니다Set-Acl.

Path 매개 변수의 값은 Cat.txt 파일의 경로입니다. AclObject 매개 변수의 값은 모델 ACL(이 경우 변수에 저장된 $DogACL Dog.txt ACL)입니다.

예제 2: 파이프라인 연산자를 사용하여 설명자 전달

Get-Acl -Path "C:\Dog.txt" | Set-Acl -Path "C:\Cat.txt"

이 명령은 파이프라인 연산자(|)를 사용하여 명령에서 명령으로 보안 설명자를 전송한다는 점을 제외하고 이전 예제의 명령 Set-AclGet-Acl 거의 동일합니다.

첫 번째 명령은 cmdlet을 Get-Acl 사용하여 Dog.txt 파일의 보안 설명자를 가져옵니다. 파이프라인 연산자(|)는 Dog.txt 보안 설명자를 나타내는 개체를 cmdlet에 Set-Acl 전달합니다.

두 번째 명령은 Dog.txt 보안 설명자를 Cat.txt 적용하는 데 사용합니다 Set-Acl . 명령이 완료되면 Dog.txt 및 Cat.txt 파일의 ACL이 동일합니다.

예제 3: 여러 파일에 보안 설명자 적용

$NewAcl = Get-Acl File0.txt
Get-ChildItem -Path "C:\temp" -Recurse -Include "*.txt" -Force | Set-Acl -AclObject $NewAcl

이러한 명령은 File0.txt 파일의 보안 설명자를 디렉터리의 모든 텍스트 파일 C:\Temp 과 모든 하위 디렉터리에 적용합니다.

첫 번째 명령은 현재 디렉터리에 있는 File0.txt 파일의 보안 설명자를 가져오고 할당 연산자(=)를 사용하여 변수에 $NewACL 저장합니다.

파이프라인의 첫 번째 명령은 Get-ChildItem cmdlet을 사용하여 디렉터리의 모든 텍스트 파일을 C:\Temp 가져옵니다. Recurse 매개 변수는 명령을 모든 하위 디렉터리로 확장합니다C:\temp. Include 매개 변수는 검색된 파일을 파일 이름 확장명을 .txt 가진 파일로 제한합니다. Force 매개 변수는 숨겨진 파일을 가져오며, 그렇지 않으면 제외됩니다. Recurse 매개 변수는 파일이 아닌 디렉터리에서 작동하므로 사용할 c:\temp\*.txt수 없습니다.

파이프라인 연산자(|)는 검색된 파일을 Set-Acl 나타내는 개체를 cmdlet에 보내며, 이 개체는 AclObject 매개 변수의 보안 설명자를 파이프라인의 모든 파일에 적용합니다.

실제로는 둘 이상의 항목에 영향을 줄 수 있는 모든 Set-Acl 명령과 함께 WhatIf 매개 변수를 사용하는 것이 가장 좋습니다. 이 경우 파이프라인의 두 번째 명령은 .입니다 Set-Acl -AclObject $NewAcl -WhatIf. 이 명령은 영향을 받을 수 있는 파일을 나열합니다. 결과를 검토한 후 WhatIf 매개 변수 없이 명령을 다시 실행할 수 있습니다.

예제 4: 상속 사용 안 함 및 상속된 액세스 규칙 유지

$NewAcl = Get-Acl -Path "C:\Pets\Dog.txt"
$isProtected = $true
$preserveInheritance = $true
$NewAcl.SetAccessRuleProtection($isProtected, $preserveInheritance)
Set-Acl -Path "C:\Pets\Dog.txt" -AclObject $NewAcl

이러한 명령은 기존 상속된 액세스 규칙을 유지하면서 부모 폴더의 액세스 상속을 사용하지 않도록 설정합니다.

첫 번째 명령은 cmdlet을 Get-Acl 사용하여 Dog.txt 파일의 보안 설명자를 가져옵니다.

다음으로, 상속된 액세스 규칙을 명시적 액세스 규칙으로 변환하기 위한 변수가 만들어집니다. 상속으로부터 이와 관련된 액세스 규칙을 보호하려면 변수$true$isProtected .로 설정합니다. 상속을 허용하려면 .로 $false설정합니다$isProtected. 자세한 내용은 액세스 규칙 보호 설정을 참조하세요.

$preserveInheritance 상속된 액세스 규칙을 유지하거나 $false 상속된 액세스 규칙을 제거하도록 변수 $true 를 설정합니다. 그런 다음 SetAccessRuleProtection() 메서드를 사용하여 액세스 규칙 보호가 업데이트됩니다.

마지막 명령은 Dog.txt 보안 설명자를 적용하는 데 사용합니다 Set-Acl . 명령이 완료되면 Pets 폴더에서 상속된 Dog.txt ACL이 Dog.txt 직접 적용되며, Pets에 추가된 새로운 액세스 정책은 Dog.txt 대한 액세스를 변경하지 않습니다.

예제 5: 관리이스트레이터에게 파일의 모든 권한 부여

$NewAcl = Get-Acl -Path "C:\Pets\Dog.txt"
# Set properties
$identity = "BUILTIN\Administrators"
$fileSystemRights = "FullControl"
$type = "Allow"
# Create new rule
$fileSystemAccessRuleArgumentList = $identity, $fileSystemRights, $type
$fileSystemAccessRule = New-Object -TypeName System.Security.AccessControl.FileSystemAccessRule -ArgumentList $fileSystemAccessRuleArgumentList
# Apply new rule
$NewAcl.SetAccessRule($fileSystemAccessRule)
Set-Acl -Path "C:\Pets\Dog.txt" -AclObject $NewAcl

이 명령은 BUILTIN\관리istrators 그룹에 Dog.txt 파일의 모든 권한을 부여합니다.

첫 번째 명령은 cmdlet을 Get-Acl 사용하여 Dog.txt 파일의 보안 설명자를 가져옵니다.

다음 변수는 BUILTIN\관리istrators 그룹에 Dog.txt 파일의 모든 권한을 부여하기 위해 만들어집니다. $identity 사용자 계정의 이름으로 설정된 변수입니다. 변수는 $fileSystemRights FullControl로 설정되며 액세스 규칙과 연결된 작업의 형식을 지정하는 FileSystemRights 값 중 하나일 수 있습니다. "허용"으로 설정된 변수는 $type 작업을 허용할지 아니면 거부할지를 지정합니다. $fileSystemAccessRuleArgumentList 변수는 새 FileSystemAccessRule 개체를 만들 때 전달되어야 하는 인수 목록입니다. 그런 다음 새 FileSystemAccessRule 개체가 만들어지고 FileSystemAccessRule 개체가 SetAccessRule() 메서드에 전달되고 새 액세스 규칙이 추가됩니다.

마지막 명령은 Dog.txt 보안 설명자를 적용하는 데 사용합니다 Set-Acl . 명령이 완료되면 BUILTIN\관리istrators 그룹은 Dog.txt 모든 권한을 갖습니다.

매개 변수

-AclObject

원하는 속성 값이 있는 ACL을 지정합니다. Set-Acl는 Path 또는 InputObject 매개 변수로 지정된 항목의 ACL을 지정된 보안 개체의 값과 일치하도록 변경합니다.

명령의 출력을 Get-Acl 변수에 저장한 다음 AclObject 매개 변수를 사용하여 변수를 전달하거나 명령을 입력 Get-Acl 할 수 있습니다.

Type:Object
Position:1
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-ClearCentralAccessPolicy

지정한 항목에서 중앙 액세스 정책을 제거합니다.

Windows Server 2012부터 관리자는 Active Directory 및 그룹 정책을 사용하여 사용자 및 그룹에 대한 중앙 액세스 정책을 설정할 수 있습니다. 자세한 내용은 동적 액세스 제어: 시나리오 개요를 참조하세요.

이 매개 변수는 Windows PowerShell 3.0에서 도입되었습니다.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Confirm

cmdlet을 실행하기 전에 확인 메시지가 표시됩니다.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Exclude

지정된 항목을 생략합니다. 이 매개 변수의 값은 Path 매개 변수를 한정합니다. 경로 요소 또는 패턴(예: *.txt.)을 입력합니다. 야생카드 허용됩니다.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-Filter

공급자의 형식 또는 언어에 필터를 지정합니다. 이 매개 변수의 값은 Path 매개 변수를 한정합니다. wild카드 사용을 포함하여 필터의 구문은 공급자에 따라 달라집니다. 필터는 검색한 후 PowerShell이 개체를 필터링하지 않고 개체를 검색할 때 적용하기 때문에 다른 매개 변수보다 더 효율적입니다.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-Include

지정된 항목만 변경합니다. 이 매개 변수의 값은 Path 매개 변수를 한정합니다. 경로 요소 또는 패턴(예: *.txt.)을 입력합니다. 야생카드 허용됩니다.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-InputObject

지정된 개체의 보안 설명자를 변경합니다. 개체 또는 개체를 가져오는 명령이 포함된 변수를 입력합니다.

변경할 Set-Acl개체를 파이프할 수 없습니다. 대신 명령에서 InputObject 매개 변수를 명시적으로 사용합니다.

이 매개 변수는 Windows PowerShell 3.0에서 도입되었습니다.

Type:PSObject
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-LiteralPath

지정된 항목의 보안 설명자를 변경합니다. Path와 달리 LiteralPath 매개 변수의 값은 입력된 대로 정확하게 사용됩니다. 어떤 문자도 야생으로 해석되지 카드. 경로에 이스케이프 문자가 포함된 경우 작은따옴표(')로 묶습니다. 작은따옴표는 PowerShell에 문자를 이스케이프 시퀀스로 해석하지 않도록 지시합니다.

이 매개 변수는 Windows PowerShell 3.0에서 도입되었습니다.

Type:String[]
Aliases:PSPath
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Passthru

변경된 보안 설명자를 나타내는 개체를 반환합니다. 기본적으로 이 cmdlet은 출력을 생성하지 않습니다.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Path

지정된 항목의 보안 설명자를 변경합니다. 파일 또는 레지스트리 키의 경로와 같은 항목의 경로를 입력합니다. 야생카드 허용됩니다.

AclObject 또는 SecurityDescriptor 매개 변수를 사용하거나 Get-AclSet-Acl에서 보안 개체를 전달하여 보안 개체 Set-Acl 를 전달하고 Path 매개 변수(이름 및 값Set-Acl)를 생략하면 보안 개체에 포함된 경로를 사용합니다.

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:True

-WhatIf

cmdlet이 실행될 경우 결과 동작을 표시합니다. cmdlet이 실행되지 않습니다.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

입력

ObjectSecurity

이 cmdlet에 ACL 개체를 파이프할 수 있습니다.

CommonSecurityDescriptor

이 cmdlet에 보안 설명자를 파이프할 수 있습니다.

출력

None

기본적으로 이 cmdlet은 출력을 반환하지 않습니다.

FileSecurity

PassThru 매개 변수를 사용하는 경우 이 cmdlet은 보안 개체를 반환합니다. 보안 개체의 형식은 항목의 형식에 따라 달라집니다.

참고

이 cmdlet은 Windows 플랫폼에서만 사용할 수 있습니다.

cmdlet Set-Acl 은 PowerShell 파일 시스템 및 레지스트리 공급자에서 지원됩니다. 따라서 파일, 디렉터리 및 레지스트리 키의 보안 설명자를 변경하는 데 사용할 수 있습니다.