PowerShell을 사용하여 ACL 권한 관리

Marion Paul Kenneth Mendoza 2023년6월21일
  1. PowerShell의 NTFS 권한 유형
  2. Get-Acl 명령을 사용하여 PowerShell의 폴더 및 파일에 대한 ACL 가져오기
  3. Set-Acl 명령을 사용하여 PowerShell에서 파일 및 폴더에 대한 ACL 설정
  4. -RemoveAccessRule 매개변수를 사용하여 PowerShell에서 사용자 권한 제거
  5. PowerShell에서 권한 상속 비활성화 또는 활성화
  6. SetOwner 메서드를 사용하여 PowerShell에서 파일 및 폴더 소유권 변경
PowerShell을 사용하여 ACL 권한 관리

시스템 관리자는 최소 권한 모델을 구현하기 위해 NTFS 파일 서버에 액세스 제어 항목 ACE를 추가하여 NTFS 액세스 제어 목록 ACL을 구성합니다.

이 문서에서는 다양한 권한 유형과 PowerShell을 사용하여 파일 및 폴더에 대한 ACL을 쿼리, 수정 및 제거하는 방법에 대해 설명합니다.

PowerShell의 NTFS 권한 유형

고급 및 기본 NTFS 권한이 있습니다. 예를 들어, 각 권한을 거부 또는 허용으로 설정할 수 있습니다.

  • 모든 권한: 이 권한이 있는 사용자는 파일 및 디렉토리는 물론 관련 속성을 수정, 추가, 이동 및 삭제할 수 있습니다. 또한 이 권한이 있는 사용자는 모든 하위 디렉터리 및 파일에 대한 권한 설정을 변경할 수 있습니다.
  • 수정: 이 권한이 있는 사용자는 디렉토리에 파일 추가 및 삭제, 파일에 파일 속성 추가 및 삭제를 포함하여 파일 및 파일 속성을 보고 수정할 수 있습니다.
  • 읽기 및 실행: 이 권한이 있는 사용자는 스크립트를 포함한 실행 파일을 실행할 수 있습니다.
  • 읽기: 사용자는 이 권한으로 파일, 파일 속성 및 디렉터리를 볼 수 있습니다.
  • 쓰기: 이 권한이 있는 사용자는 파일에 쓰고 디렉터리에 파일을 추가할 수 있습니다.

다음은 고급 권한 목록입니다.

  • 폴더 트래버스 또는 파일 실행: 이 고급 권한이 있는 사용자는 이러한 파일 또는 폴더에 대한 권한이 없더라도 폴더를 탐색하여 다른 폴더 또는 파일에 연결할 수 있습니다. 이 고급 권한이 있는 사용자는 실행 파일을 실행할 수도 있습니다. 폴더 트래버스 권한은 사용자 또는 그룹에 그룹 정책 스냅인에서 트래버스 검사 우회 권한이 없을 때 적용됩니다.
  • List Folder 또는 Read Data: 이 고급 권한이 있는 사용자는 폴더 내의 파일 및 하위 폴더 목록과 파일 내용을 볼 수 있습니다.
  • 속성 읽기: 이 고급 권한이 있는 사용자는 폴더 또는 파일의 속성(예: 숨김 또는 읽기 전용)을 볼 수 있습니다.
  • 속성 쓰기: 이 고급 권한이 있는 사용자는 파일 또는 폴더의 속성을 변경할 수 있습니다.
  • 확장 속성 읽기: 이 고급 권한이 있는 사용자는 권한, 생성 및 수정 시간과 같은 폴더 또는 파일의 확장 속성을 볼 수 있습니다.
  • 확장 속성 쓰기: 이 고급 권한이 있는 사용자는 폴더 또는 파일의 확장 속성을 변경할 수 있습니다.
  • Create Files 또는 Write Data: Create Files 권한을 통해 사용자는 이 고급 권한으로 폴더 내에서 파일을 생성할 수 있습니다. 이 권한은 폴더에만 적용됩니다. 데이터 쓰기 권한을 사용하면 이 고급 권한이 있는 사용자가 파일을 변경하고 기존 콘텐츠를 덮어쓸 수 있습니다. 이 권한은 파일에만 적용됩니다.
  • Create Folders 또는 Append Data: Create Folders 권한을 통해 사용자는 이 고급 권한으로 폴더 내에 폴더를 생성할 수 있습니다. 이 권한은 폴더에만 적용됩니다. 데이터 추가 권한을 사용하면 이 고급 권한이 있는 사용자가 파일 끝을 변경할 수 있지만 기존 데이터를 변경, 덮어쓰기 또는 삭제할 수는 없습니다. 이 권한은 파일에만 적용됩니다.
  • 삭제: 이 고급 권한이 있는 사용자는 폴더 또는 파일을 삭제할 수 있습니다. 사용자에게 폴더나 파일에 대한 Delete 권한이 없는 경우에도 상위 폴더에 대한 Delete Subfolders And Files 권한이 있으면 개체를 삭제할 수 있습니다.
  • 읽기 권한: 이 고급 권한이 있는 사용자는 모든 권한, 읽기쓰기와 같은 폴더 또는 파일의 권한을 읽을 수 있습니다.
  • 권한 변경: 이 고급 권한을 가진 사용자는 파일 또는 폴더의 권한을 변경할 수 있습니다.
  • 소유권 가져오기: 이 고급 권한이 있는 사용자는 파일 또는 폴더의 소유권을 가질 수 있습니다. 파일 또는 폴더 소유자는 파일 또는 폴더를 보호하는 기존 권한에 관계없이 항상 권한을 변경할 수 있습니다.
  • 동기화: 이 고급 권한이 있는 사용자는 동기화를 위해 개체를 사용할 수 있습니다. 이 권한은 개체가 신호를 받은 상태가 될 때까지 스레드가 대기할 수 있도록 합니다. 이 권한은 ACL 편집기에 표시되지 않습니다.

아래 PowerShell 스크립트를 실행하여 이러한 사용자 권한에 대한 모든 정보를 찾을 수 있습니다.

[System.Enum]::GetNames([System.Security.AccessControl.FileSystemRights])

NTFS 권한은 명시적이거나 상속될 수 있습니다. 명시적 권한은 개별적으로 구성되지만 상속된 권한은 상위 폴더에서 상속됩니다.

권한 계층은 다음과 같습니다.

  • 명시적 거부
  • 명시적 허용
  • 상속된 거부
  • 상속된 허용

Get-Acl 명령을 사용하여 PowerShell의 폴더 및 파일에 대한 ACL 가져오기

파일 및 폴더 권한을 관리하는 데 사용되는 첫 번째 PowerShell 명령은 Get-Acl입니다. 모든 개체 권한을 나열합니다.

Get-Acl \\fs1\shared\hr | fl

권한을 복사하려면 사용자가 대상 폴더와 소스 폴더를 모두 소유해야 합니다.

Get-Acl \\fs1\shared\hr | Set-Acl \\fs1\shared\hr

Set-Acl 명령을 사용하여 PowerShell에서 파일 및 폴더에 대한 ACL 설정

PowerShell Set-Acl 명령은 파일, 폴더 또는 레지스트리 키와 같은 지정된 항목의 보안 설명자를 변경하는 데 사용됩니다. 즉, 파일 또는 폴더 권한을 수정하는 데 사용됩니다.

$acl = Get-Acl \\fs1\shared\hr

$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("ENTERPRISE\User01","FullControl","Allow")

$acl.SetAccessRule($AccessRule)

$acl | Set-Acl \\fs1\shared\hr

-RemoveAccessRule 매개변수를 사용하여 PowerShell에서 사용자 권한 제거

$acl = Get-Acl \\fs1\shared\hr

$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("ENTERPRISE\User01","FullControl","Allow")

$acl.RemoveAccessRule($AccessRule)

$acl | Set-Acl \\fs1\shared\hr

PowerShell에서 권한 상속 비활성화 또는 활성화

상속을 관리하기 위해 SetAccessRuleProtection 메소드를 사용할 수 있습니다. 이 메서드에는 두 개의 매개변수가 있습니다.

  • 첫 번째 매개변수는 상위 폴더로부터의 상속을 차단하는 역할을 합니다. $true$false 부울 상태를 반환합니다.
  • 두 번째 매개변수는 현재 상속된 권한이 제거되거나 유지되는지 여부에 따라 사용됩니다. 또한 부울 상태인 $true$false도 반환합니다.
$acl = Get-Acl \\fs1\shared\hr

$acl.SetAccessRuleProtection($true,$false)

$acl | Set-Acl \\fs1\shared\hr

이 변경 사항을 되돌리고 폴더에 대한 상속을 다시 활성화하겠습니다.

$acl = Get-Acl \\fs1\shared\hr

$acl.SetAccessRuleProtection($false,$true)

$acl | Set-Acl \\fs1\shared\hr

SetOwner 메서드를 사용하여 PowerShell에서 파일 및 폴더 소유권 변경

폴더의 소유자를 설정하려면 SetOwner 메서드를 실행해야 합니다.

$acl = Get-Acl \\fs1\shared\hr

$object = New-Object System.Security.Principal.Ntaccount("ENTERPRISE\User01")

$acl.SetOwner($object)

$acl | Set-Acl \\fs1\shared\hr
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn