PowerShell을 사용하여 ACL 권한 관리하는 방법

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

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

이 기사에서는 다양한 권한 유형과 PowerShell을 사용하여 파일 및 폴더의 ACL을 쿼리, 수정 및 제거하는 방법을 배웁니다.

PowerShell의 NTFS 권한 유형

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

  • 전체 제어: 이 권한이 있는 사용자는 파일 및 디렉토리를 수정, 추가, 이동 및 삭제할 수 있으며, 그와 관련된 속성도 변경할 수 있습니다. 또한, 이 권한이 있는 사용자는 모든 하위 디렉토리 및 파일에 대한 권한 설정을 변경할 수 있습니다.
  • 수정: 이 권한이 있는 사용자는 파일 및 파일 속성을 보고 수정할 수 있으며, 디렉토리에 파일을 추가하거나 파일 속성을 삭제할 수 있습니다.
  • 읽기 및 실행: 이 권한이 있는 사용자는 실행 파일, 스크립트를 포함하여 실행 가능한 파일을 실행할 수 있습니다.
  • 읽기: 이 권한을 가진 사용자는 파일, 파일 속성 및 디렉토리를 볼 수 있습니다.
  • 쓰기: 이 권한이 있는 사용자는 파일에 쓸 수 있으며 디렉토리에 파일을 추가할 수 있습니다.

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

  • 폴더 탐색 또는 파일 실행: 이 고급 권한이 있는 사용자는 폴더를 탐색하여 다른 폴더나 파일에 도달할 수 있으며, 이러한 파일이나 폴더에 대한 권한이 없어도 가능합니다. 이 고급 권한이 있는 사용자는 또한 실행 가능한 파일을 실행할 수 있습니다. 폴더 탐색 권한은 사용자가 그룹 정책 스냅인에서 탐색 우회 확인 우선 권한이 없을 때 적용됩니다.
  • 폴더 목록 또는 데이터 읽기: 이 고급 권한이 있는 사용자는 폴더 내의 파일 및 하위 폴더 목록과 파일 내용을 볼 수 있습니다.
  • 속성 읽기: 이 고급 권한이 있는 사용자는 파일이나 폴더의 속성, 예를 들어 숨겨져 있는지 또는 읽기 전용인지 여부를 볼 수 있습니다.
  • 속성 쓰기: 이 고급 권한이 있는 사용자는 파일이나 폴더의 속성을 변경할 수 있습니다.
  • 확장 속성 읽기: 이 고급 권한이 있는 사용자는 파일이나 폴더의 확장 속성, 예를 들어 권한 및 생성 및 수정 시간을 볼 수 있습니다.
  • 확장 속성 쓰기: 이 고급 권한이 있는 사용자는 파일이나 폴더의 확장 속성을 변경할 수 있습니다.
  • 파일 생성 또는 데이터 쓰기: 파일 생성 권한은 사용자가 이 고급 권한을 가진 폴더 내에서 파일을 생성할 수 있게 합니다. 이 권한은 폴더에만 적용됩니다. 데이터 쓰기 권한은 이 고급 권한이 있는 사용자가 파일을 변경하고 기존 내용을 덮어 쓸 수 있게 합니다. 이 권한은 파일에만 적용됩니다.
  • 폴더 생성 또는 데이터 추가: 폴더 생성 권한은 사용자가 이 고급 권한을 가진 폴더 내에서 폴더를 생성할 수 있게 합니다. 이 권한은 폴더에만 적용됩니다. 데이터 추가 권한은 이 고급 권한이 있는 사용자가 파일 끝에 변경할 수 있게 하지만 기존 데이터를 변경, 덮어쓰거나 삭제할 수는 없습니다. 이 권한은 파일에만 적용됩니다.
  • 삭제: 이 고급 권한이 있는 사용자는 폴더나 파일을 삭제할 수 있습니다. 사용자가 폴더나 파일에서 삭제 권한이 없는 경우, 부모 폴더에서 하위 폴더 및 파일 삭제 권한이 있는 경우에도 객체를 삭제할 수 있습니다.
  • 권한 읽기: 이 고급 권한이 있는 사용자는 폴더나 파일의 권한, 예를 들어 전체 제어, 읽기, 쓰기를 읽을 수 있습니다.
  • 권한 변경: 이 고급 권한이 있는 사용자는 파일이나 폴더의 권한을 변경할 수 있습니다.
  • 소유권 가져오기: 이 고급 권한이 있는 사용자는 파일이나 폴더의 소유권을 가져올 수 있습니다. 파일이나 폴더의 소유자는 항상 권한을 변경할 수 있으며, 파일이나 폴더를 보호하는 기존 권한과 관계없이 가능합니다.
  • 동기화: 이 고급 권한이 있는 사용자는 객체를 동기화하는 데 사용할 수 있습니다. 이 권한은 스레드가 객체가 신호 상태에 들어갈 때까지 기다리게 합니다. 이 권한은 ACL 편집기에서 제공되지 않습니다.

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

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

NTFS 권한은 명시적이거나 상속받을 수 있습니다. 명시적 권한은 개별적으로 구성되며, 상속받은 권한은 상위 폴더에서 상속됩니다.

권한의 계층 구조는 다음과 같습니다:

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

PowerShell에서 폴더 및 파일에 대한 ACL을 가져오기 위해 Get-Acl 명령어 사용

파일 및 폴더 권한을 관리하기 위해 사용되는 첫 번째 PowerShell 명령어는 Get-Acl입니다. 이는 모든 객체 권한을 나열합니다.

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

사용자는 권한을 복사하기 위해 대상 및 원본 폴더를 모두 소유해야 합니다.

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

PowerShell에서 파일 및 폴더에 대한 ACL을 설정하기 위해 Set-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

PowerShell에서 사용자 권한을 제거하기 위해 -RemoveAccessRule 매개변수 사용

$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

PowerShell에서 파일 및 폴더 소유권 변경을 위해 SetOwner 메서드 사용

폴더의 소유자를 설정하려면 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
튜토리얼이 마음에 드시나요? DelftStack을 구독하세요 YouTube에서 저희가 더 많은 고품질 비디오 가이드를 제작할 수 있도록 지원해주세요. 구독하다
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