Set-Acl
파일 또는 레지스트리 키와 같은 지정된 항목의 보안 설명자를 변경합니다.
구문
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 플랫폼에서만 사용할 수 있습니다.
Set-Acl
cmdlet은 사용자가 제공하는 보안 설명자의 값과 일치하도록 파일 또는 레지스트리 키와 같은 지정된 항목의 보안 설명자를 변경합니다.
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 파일의 보안 설명자가 동일합니다.
첫 번째 명령은 Get-Acl
cmdlet을 사용하여 Dog.txt
파일의 보안 설명자를 가져옵니다.
대입 연산자(=
)는 보안 설명자를 $DogACL
변수의 값에 저장합니다.
두 번째 명령은 Set-Acl
사용하여 Cat.txt ACL의 값을 $DogACL
값으로 변경합니다.
Path 매개 변수의 값은 Cat.txt 파일의 경로입니다.
AclObject 매개 변수의 값은 모델 ACL(이 경우 $DogACL
변수에 저장된 Dog.txt
ACL)입니다.
예제 2: 파이프라인 연산자를 사용하여 설명자 전달
Get-Acl -Path "C:\Dog.txt" | Set-Acl -Path "C:\Cat.txt"
이 명령은 파이프라인 연산자(|
)를 사용하여 Get-Acl
명령에서 Set-Acl
명령으로 보안 설명자를 보내는 것을 제외하고는 이전 예제의 명령과 거의 동일합니다.
첫 번째 명령은 Get-Acl
cmdlet을 사용하여 Dog.txt
파일의 보안 설명자를 가져옵니다.
파이프라인 연산자(|
)는 Dog.txt
보안 설명자를 나타내는 개체를 Set-Acl
cmdlet에 전달합니다.
두 번째 명령은 Set-Acl
사용하여 Dog.txt
보안 설명자를 Cat.txt적용합니다.
명령이 완료되면 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 매개 변수는 숨겨진 파일을 가져오며, 그렇지 않으면 제외됩니다.
재귀 매개 변수는 파일이 아닌 디렉터리에서 작동하므로 c:\temp\*.txt
사용할 수 없습니다.
파이프라인 연산자(|
)는 검색된 파일을 나타내는 개체를 Set-Acl
cmdlet에 보냅니다. 이 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
이러한 명령은 기존 상속된 액세스 규칙을 유지하면서 부모 폴더의 액세스 상속을 사용하지 않도록 설정합니다.
첫 번째 명령은 Get-Acl
cmdlet을 사용하여 Dog.txt
파일의 보안 설명자를 가져옵니다.
다음으로, 상속된 액세스 규칙을 명시적 액세스 규칙으로 변환하기 위한 변수가 만들어집니다. 상속으로부터 이와 관련된 액세스 규칙을 보호하려면 $isProtected
변수를 $true
설정합니다. 상속을 허용하려면 $isProtected
$false
설정합니다. 자세한 내용은 액세스 규칙 보호 설정 을 참조하세요.
상속된 액세스 규칙을 유지하려면 $preserveInheritance
변수를 $true
로 설정하고, 상속된 액세스 규칙을 제거하려면 $false
로 설정합니다. 그런 다음 SetAccessRuleProtection() 메서드를 사용하여 액세스 규칙 보호가 업데이트됩니다.
마지막 명령은 Set-Acl
사용하여 Dog.txt
보안 설명자를 적용합니다. 명령이 완료되면 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
$newParams = @{
TypeName = 'System.Security.AccessControl.FileSystemAccessRule'
ArgumentList = $fileSystemAccessRuleArgumentList
}
$fileSystemAccessRule = New-Object @newParams
# Apply new rule
$NewAcl.SetAccessRule($fileSystemAccessRule)
Set-Acl -Path "C:\Pets\Dog.txt" -AclObject $NewAcl
이 명령은 BUILTIN\Administrators 그룹에 Dog.txt
파일에 대한 모든 권한을 부여합니다.
첫 번째 명령은 Get-Acl
cmdlet을 사용하여 Dog.txt
파일의 보안 설명자를 가져옵니다.
다음 변수는 BUILTIN\Administrators 그룹에 Dog.txt
파일의 모든 권한을 부여하기 위해 만들어집니다.
사용자 계정이름으로 설정된 $identity
변수입니다.
$fileSystemRights
변수는 FullControl로 설정되며 액세스 규칙과 연결된 작업 유형을 지정하는 FileSystemRights 값 중 하나일 수 있습니다. "허용"으로 설정된 $type
변수는 작업을 허용할지 아니면 거부할지를 지정합니다.
$fileSystemAccessRuleArgumentList
변수는 새 FileSystemAccessRule 개체를 만들 때 전달되어야 하는 인수 목록입니다. 그런 다음 새 FileSystemAccessRule 개체가 만들어지고 FileSystemAccessRule 개체가 SetAccessRule() 메서드에 전달되어 새 액세스 규칙을 추가합니다.
마지막 명령은 Set-Acl
사용하여 Dog.txt
보안 설명자를 적용합니다. 명령이 완료되면 BUILTIN\Administrators 그룹에 Dog.txt
대한 모든 권한이 있습니다.
매개 변수
-AclObject
원하는 속성 값이 있는 ACL을 지정합니다.
Set-Acl
지정된 보안 개체의 값과 일치하도록 Path 또는 InputObject 매개 변수로 지정된 항목의 ACL을 변경합니다.
Get-Acl
명령의 출력을 변수에 저장한 다음 AclObject 매개 변수를 사용하여 변수를 전달하거나 Get-Acl
명령을 입력할 수 있습니다.
형식: | Object |
Position: | 1 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | True |
와일드카드 문자 허용: | False |
-ClearCentralAccessPolicy
지정된 항목에서 중앙 액세스 정책을 제거합니다.
Windows Server 2012부터 관리자는 Active Directory 및 그룹 정책을 사용하여 사용자 및 그룹에 대한 중앙 액세스 정책을 설정할 수 있습니다. 자세한 내용은 동적 액세스 제어: 시나리오 개요참조하세요.
이 매개 변수는 Windows PowerShell 3.0에서 도입되었습니다.
형식: | SwitchParameter |
별칭: | PSPath, LP |
Position: | Named |
Default value: | False |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Confirm
cmdlet을 실행하기 전에 확인 메시지를 표시합니다.
형식: | SwitchParameter |
별칭: | cf |
Position: | Named |
Default value: | False |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Exclude
지정된 항목을 생략합니다. 이 매개 변수의 값은 Path 매개 변수를 한정합니다. 경로 요소 또는 패턴(예: *.txt
)을 입력합니다. 와일드카드가 허용됩니다.
형식: | String[] |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | True |
-Filter
공급자의 형식 또는 언어로 필터를 지정합니다. 이 매개 변수의 값은 Path 매개 변수를 한정합니다. 와일드카드 사용을 포함하여 필터의 구문은 공급자에 따라 달라집니다. 필터는 개체를 검색할 때 공급자가 적용하여 PowerShell이 검색 후에 개체를 필터링할 필요가 없기 때문에 다른 매개 변수보다 더 효율적입니다.
형식: | String |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | True |
-Include
지정된 항목만 변경합니다. 이 매개 변수의 값은 Path 매개 변수를 한정합니다.
경로 요소 또는 패턴(예: *.txt
)을 입력합니다. 와일드카드가 허용됩니다.
형식: | String[] |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | True |
-InputObject
지정된 개체의 보안 설명자를 변경합니다. 개체 또는 개체를 가져오는 명령이 포함된 변수를 입력합니다.
변경할 개체를 Set-Acl
파이프할 수 없습니다. 대신 명령에서 InputObject 매개 변수를 명시적으로 사용합니다.
이 매개 변수는 Windows PowerShell 3.0에서 도입되었습니다.
형식: | PSObject |
Position: | 0 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | True |
와일드카드 문자 허용: | False |
-LiteralPath
지정된 항목의 보안 설명자를 변경합니다.
Path달리 LiteralPath 매개 변수의 값은 입력된 대로 정확하게 사용됩니다. 와일드카드로 해석되는 문자는 없습니다. 경로에 이스케이프 문자가 포함된 경우 작은따옴표('
)로 묶습니다.
작은따옴표는 PowerShell에 문자를 이스케이프 시퀀스로 해석하지 않도록 지시합니다.
이 매개 변수는 Windows PowerShell 3.0에서 도입되었습니다.
형식: | String[] |
별칭: | PSPath |
Position: | Named |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | True |
와일드카드 문자 허용: | False |
-PassThru
변경된 보안 설명자를 나타내는 개체를 반환합니다. 기본적으로 이 cmdlet은 출력을 생성하지 않습니다.
형식: | SwitchParameter |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Path
지정된 항목의 보안 설명자를 변경합니다. 파일 또는 레지스트리 키의 경로와 같은 항목의 경로를 입력합니다. 와일드카드가 허용됩니다.
AclObject 또는 SecurityDescriptor 매개 변수를 사용하거나 Get-Acl
에서 Set-Acl
로 보안 객체를 전달하여 Set-Acl
로 보안 객체를 전달할 때, Path 매개 변수(이름 및 값)를 생략하면 Set-Acl
는 보안 객체에 포함된 경로를 사용합니다.
형식: | String[] |
Position: | 0 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | True |
와일드카드 문자 허용: | True |
-WhatIf
cmdlet이 실행되면 어떻게 되는지 보여 주세요. cmdlet이 실행되지 않습니다.
형식: | SwitchParameter |
별칭: | wi |
Position: | Named |
Default value: | False |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
입력
이 cmdlet에 ACL 개체를 파이프할 수 있습니다.
이 cmdlet에 보안 설명자를 파이프할 수 있습니다.
출력
None
기본적으로 이 cmdlet은 출력을 반환하지 않습니다.
PassThru 매개 변수를 사용하는 경우 이 cmdlet은 보안 개체를 반환합니다. 보안 개체의 형식은 항목의 형식에 따라 달라집니다.
참고
이 cmdlet은 Windows 플랫폼에서만 사용할 수 있습니다.
Set-Acl
cmdlet은 PowerShell 파일 시스템 및 레지스트리 공급자에서 지원됩니다. 따라서 파일, 디렉터리 및 레지스트리 키의 보안 설명자를 변경하는 데 사용할 수 있습니다.
관련 링크
PowerShell