[컴] windows 의 icacls 사용법

windows ACL 확인 / acl 이란? / acl 에 대한 / 권한 제어 / permission / grant permission /

windows 의 icacls 사용법

ACL 확인

cmd 창에서 icacls "c:\Program Files" 를 하면 “Program Files” folder에 대한 현재 ACL 을 볼 수 있다.

f:\>icacls "c:\Program Files"
c:\Program Files NT SERVICE\TrustedInstaller:(F)
                 NT SERVICE\TrustedInstaller:(CI)(IO)(F)
                 NT AUTHORITY\SYSTEM:(M)
                 NT AUTHORITY\SYSTEM:(OI)(CI)(IO)(F)
                 BUILTIN\Administrators:(M)
                 BUILTIN\Administrators:(OI)(CI)(IO)(F)
                 BUILTIN\Users:(RX)
                 BUILTIN\Users:(OI)(CI)(IO)(GR,GE)
                 CREATOR OWNER:(OI)(CI)(IO)(F)
                 APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(RX)
                 APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(OI)(CI)(IO)(GR,GE)
                 APPLICATION PACKAGE AUTHORITY\모든 제한된 응용 프로그램 패키지:(RX)
                 APPLICATION PACKAGE AUTHORITY\모든 제한된 응용 프로그램 패키지:(OI)(CI)(IO)(GR,GE)

위의 ‘()’(괄호) 안에 들어있는 값을 permission 을 줄때 쓰면 된다. 다음은 testfolder 에 대해서 ’everyone’에게 R(read-only access)를 주는 command 이다.

# testfolder 에 대해서 'everyone'에게 R(read-only access)를 부여

icacls testfolder /grant everyone:R /t /c

option 설명:

  • /t : 현재 디렉터리 및 하위 디렉터리에서 지정 된 모든 파일에 작업을 수행합니다.
  • /c : 파일 오류 불구하고 작업을 계속 합니다. 오류 메시지는 계속 표시 된다.
  • /grant
    • /grant:r : 권한을 새롭게 replace 한다. :r이 없으면, add 가 된다. 즉 현재 존재하는 permission 에 새로운 permission 을 추가하게 된다.

ACL

ACL 은 aceess control list 의 약자. list 에 있는 개별 permission rule 은 access control entry(ACE) 라고 부른다. 이것이 access 를 control 한다. 이런 access control list 들은 discretionary access control lists(DACLs) 라 부른다.

exporting, importing ACL

다음처럼 하면 acl 를 그대로 복사할 수 있다.

/t 넣으면, sub-directory 의 acl 까지 같이 저장한다. 이러면 restore 시점에도 같은 directory 구조를 가지고 있어야 한다.

icacls testfolder /save testfolder_acl /t
icacls testfolder /restore testfolder_acl

참고:

inheritace permissions, 상속 권한

만약 위에서 처럼 testfolder에 everyone:R/t를 써서 sub-directory 에 줬다. 그런데 만약 testfolder에 새로운 sub-directory 를 추가하면, 그 sub-directory 는 everyone:R 이라는 permission 을 갖고 있지 않게 된다.

이것은 testfolder에 상속가능한 permission 들을 주지 않았기 때문이다. 아래처럼 상속이 되는 권한을 줄 수 있다. 권한에 대한 내용은 ref. 2 를 참고하자.

D:\a>icacls testfolder /grant:r Everyone:(OI)(CI)W /t
처리된 파일: testfolder
1 파일을 처리했으며 0 파일은 처리하지 못했습니다.

D:\a>icacls d:\a\testfolder\
d:\a\testfolder\ Everyone:(R)
                 Everyone:(OI)(CI)(W)
                 BUILTIN\Administrators:(I)(F)
                 BUILTIN\Administrators:(I)(OI)(CI)(IO)(F)
                 NT AUTHORITY\SYSTEM:(I)(F)
                 NT AUTHORITY\SYSTEM:(I)(OI)(CI)(IO)(F)
                 NT AUTHORITY\Authenticated Users:(I)(M)
                 NT AUTHORITY\Authenticated Users:(I)(OI)(CI)(IO)(M)
                 BUILTIN\Users:(I)(RX)
                 BUILTIN\Users:(I)(OI)(CI)(IO)(GR,GE)

1 파일을 처리했으며 0 파일은 처리하지 못했습니다.

새롭게 생성된 sub-directory 에 ACE 가 추가되어 있는 모습

D:\a>mkdir .\testfolder\testsub2

D:\a>icacls ./testfolder/testsub2
./testfolder/testsub2 Everyone:(I)(OI)(CI)(W)
                      BUILTIN\Administrators:(I)(F)
                      BUILTIN\Administrators:(I)(OI)(CI)(IO)(F)
                      NT AUTHORITY\SYSTEM:(I)(F)
                      NT AUTHORITY\SYSTEM:(I)(OI)(CI)(IO)(F)
                      NT AUTHORITY\Authenticated Users:(I)(M)
                      NT AUTHORITY\Authenticated Users:(I)(OI)(CI)(IO)(M)
                      BUILTIN\Users:(I)(RX)
                      BUILTIN\Users:(I)(OI)(CI)(IO)(GR,GE)

1 파일을 처리했으며 0 파일은 처리하지 못했습니다.

/reset

D:\a>icacls ./testfolder /reset
처리된 파일: ./testfolder
1 파일을 처리했으며 0 파일은 처리하지 못했습니다.

D:\a>icacls ./testfolder/testsub2
./testfolder/testsub2 BUILTIN\Administrators:(I)(F)
                      BUILTIN\Administrators:(I)(OI)(CI)(IO)(F)
                      NT AUTHORITY\SYSTEM:(I)(F)
                      NT AUTHORITY\SYSTEM:(I)(OI)(CI)(IO)(F)
                      NT AUTHORITY\Authenticated Users:(I)(M)
                      NT AUTHORITY\Authenticated Users:(I)(OI)(CI)(IO)(M)
                      BUILTIN\Users:(I)(RX)
                      BUILTIN\Users:(I)(OI)(CI)(IO)(GR,GE)

1 파일을 처리했으며 0 파일은 처리하지 못했습니다.

D:\a>icacls ./testfolder/
./testfolder/ BUILTIN\Administrators:(I)(F)
              BUILTIN\Administrators:(I)(OI)(CI)(IO)(F)
              NT AUTHORITY\SYSTEM:(I)(F)
              NT AUTHORITY\SYSTEM:(I)(OI)(CI)(IO)(F)
              NT AUTHORITY\Authenticated Users:(I)(M)
              NT AUTHORITY\Authenticated Users:(I)(OI)(CI)(IO)(M)
              BUILTIN\Users:(I)(RX)
              BUILTIN\Users:(I)(OI)(CI)(IO)(GR,GE)

1 파일을 처리했으며 0 파일은 처리하지 못했습니다.

D:\a>

Reference

  1. icacls: List, set, grant, remove, and deny permissions – 4sysops
  2. icacls | Microsoft Learn

댓글 없음:

댓글 쓰기