본문 바로가기
Linux/Linux Shell Command

chmod - 파일 접근 권한 변경 명령어

by 드로니뚜벅이 2023. 3. 7.

리눅스 파일 접근 권한 : chmod 명령어

리눅스에서, 파일(File)을 사용해 할 수 있는 작업은 크게 세 가지로 나눌 수 있습니다.

  • 파일에 저장된 데이터를 읽기 (r = read).
  • 파일에 데이터를 쓰기 (w = write).
  • 파일 실행 (x = execute)

그런데 만약 리눅스 시스템의 모든 파일이, 그 종류 또는 쓰임새와 관계없이 읽기, 쓰기, 실행 가능하게 만들어져 있다면 어떻게 될까요? 잘못된 명령어 사용으로 시스템 운영에 중요한 역할을 하는 파일의 내용이 변경되거나, 사용자의 사소한 실수 한번으로 리눅스 시스템의 모든 파일이 삭제되어 버릴 수도 있습니다.

이런 문제가 생기는 경우를 방지하기 위해, 리눅스에서는 각 파일 및 디렉토리에 대해 "읽기(r)", "쓰기(w)", "실행(x)" 권한(permission)을 파일 개별적으로 지정할 수 있도록 만들어 놓았습니다. 그리고 이 세 가지 권한을 "파일을 소유한 사용자(user)", "특정 그룹(group)에 소속된 사용자", "그 외 사용자(others)"에 대해 각각 지정할 수 있게 만들었습니다.

chmod 명령은 바로 이러한 파일의 권한을 변경할 수 있게 만들어주는 명령입니다. "change"와 "mode"의 앞 글자들을 조합한 이름이죠. (chmod = ch + mod)

여기서 "모드(mode)"란, 앞서 소개한 세 가지 권한(읽기, 쓰기, 실행)과 각각의 권한을 지정할 대상(파일 소유자, 그룹, 그외 사용자)을 포함한 파일의 속성을 말합니다. 즉, chmod 명령에서 지정하는 읽기(r), 쓰기(w), 실행(x) 권한 및 소유자(user), 그룹(group), 그 외 사용자(others)에 대한 설정 값을 통틀어 "모드(mode)"라고 지칭합니다. 그러므로 chmod 명령을 사용하여 파일의 모드(mode)를 변경한다는 것은 파일의 권한을 변경한다는 것과 동일한 의미를 가집니다.

 

chmod 명령어

앞서 설명했듯이 chmod 명령은 파일의 모드(mode)를 변경하는 명령입니다. chmod 다음에 "선택 옵션"과 "모드를 나타내는 문자열", 그리고 "대상 파일(또는 디렉토리)"을 순서대로 입력하여 파일의 모드를 변경할 수 있습니다.

    chmod [OPTION] [MODE] [FILE]
      OPTION
        -v        : 모든 파일에 대해 모드가 적용되는 진단(diagnostic) 메시지 출력.
        -f        : 에러 메시지 출력하지 않음.
        -c        : 기존 파일 모드가 변경되는 경우만 진단(diagnostic) 메시지 출력.
        -R        : 지정한 모드를 파일과 디렉토리에 대해 재귀적으로(recursively) 적용.
      MODE
        파일에 적용할 모드(mode) 문자열 조합.
          u,g,o,a : 소유자(u), 그룹(g), 그 외 사용자(o), 모든 사용자(a) 지정.
          +,-,=   : 현재 모드에 권한 추가(+), 현재 모드에서 권한 제거(-), 현재 모드로 권한 지정(=)
          r,w,x   : 읽기 권한(r), 쓰기 권한(w), 실행 권한(x)
          X       : "디렉토리" 또는 "실행 권한(x)이 있는 파일"에 실행 권한(x) 적용.
          s       : 실행 시 사용자 또는 그룹 ID 지정(s). "setuid", "setgid".
          t       : 공유모드에서의 제한된 삭제 플래그를 나타내는 sticky(t) bit.
          0~7     : 8진수(octet) 형식 모드 설정 값.

위에서 볼 수 있듯이, chmod에서 제공되는 OPTION의 종류는 그리 많지 않습니다. 지정 디렉토리 하위의 모든 디렉토리와 파일의 모드를 변경하는 "-R" 외에는 거의 사용하지 않기 때문에 크게 신경쓰지 않아도 되는데요. 하지만 MODE로 전달되는 파라미터에는 조금(?) 복잡한 문자열 조합이 적용됩니다. 그리고 MODE에 전달되는 이 문자열 조합이, chmod 명령의 동작을 이해하는 핵심이 되는 내용이죠.

 

chmod 명령어의 MODE 파라미터.

언뜻 보기에, MODE 파라미터에 적용되는 문자열이 꽤 복잡해 보일 수 있지만, 사실, 알고보면 매우 직관적입니다. MODE 파라미터로 조합되는 문자 조합을 생각하기 전에, 파일에 지정하고자 하는 권한을 먼저 서술형 문장으로 표현해보면 chmod 명령 작성을 좀 더 쉽게 할 수 있습니다. 한번 문장으로 표현해볼까요?

  • 파일을 소유한 사용자에 대해 읽고 쓸 수있는 권한 지정
  • 파일이 속한 그룹실행할 수 있는 권한 추가
  • 시스템의 모든 사용자읽을 수만 있는 권한 지정
  • 파일을 소유한 그룹그 외 사용자의 모든 권한 제거

자, 이제 할 일은, 저 문장에 들어 있는 단어들을 "MODE 파라미터의 문자"들로 바꾸기만 하면 됩니다. 앞서 chmod 명령의 MODE 파라미터에 적어놨지만, 아래 그림을 참고하면 조금 더 직관적으로 이해하실 수 있을거라 생각합니다.

위의 첫 번째 문장을 chmod 명령으로 바꾸면, MODE 파라미터는 아래 그림과 같이 조합될 수 있습니다.

이 규칙대로 변환하면 나머지 문장들에 대한 MODE 파라미터 조합도 그리 어렵지 않게 하실 수 있을거라 생각합니다.

  • 파일이 속한 그룹실행할 수 있는 권한 추가
    $ chmod  g+x  FILE
  • 시스템의 모든 사용자읽을 수만 있는 권한 지정
    $ chmod  a=r  FILE
  • 파일을 소유한 그룹그 외 사용자의 모든 권한 제거
    $ chmod  go-rwx  FILE

그런데 권한 "지정(=)"은 전달된 권한으로 온전히 설정되지만, "추가(+)"와 "제거(-)"는 파일이 기존에 가지고 있던 권한을 기준으로, 새로운 권한이 추가되거나 지정된 권한이 제거됩니다. 그렇다면 파일이 기존에 가지고 있던 권한을 확인할 수 있어야 겠죠? 간단하게 "ls -l" 명령을 사용하면 파일의 현재 권한을 확인할 수 있습니다.

파일 또는 디렉토리 권한 확인

리눅스에서 파일 또는 디렉토리에 지정된 권한을 확인하려면 "ls -l" 명령을 사용하면 됩니다.

$ ls -l
-rw-r--r-- 1 ppotta manager 17 Mar 24 03:17 FILE

"ls -l" 명령을 실행하면, 현재 디렉토리 내 파일 리스트(ls=list)가 하나의 파일 단위로 한줄로 길게(-l=long) 표시되는데요. 공백 기준으로 가장 첫 번째 항목(-rw-r--r--)이 파일 소유자 별 권한, 세 번째(ppotta)와 네 번째(manager) 항목이 각각 파일 소유자와 그룹을 나타냅니다.

앞서 실행한 "ls -l" 명령의 실행 결과를 해석하면, 그 결과는 아래와 같습니다.

-rw-r--r-- 1 ppotta manager 17 Mar 24 03:17 FILE
  • 파일 소유 사용자 : ppotta
  • 파일 소유 그룹 : manager
  • 파일 소유 사용자(ppotta)의 권한 : "rw-" = 읽기(r), 쓰기(w) 가능
  • 파일 소유 그룹(manager)의 권한 : "r--" = 읽기(r) 가능
  • 그 외 사용자(others)의 권한 : "r--" = 읽기(r) 가능

이제 "ls -l" 명령을 사용하여 파일에 설정된 권한을 확인하는 법을 알았으니, 추가(+)와 삭제(-)를 통해 파일에 권한을 추가하거나 제거하는 방법을 쉽게 쓸 수 있겠죠?

그런데 여기서 한 가지 의문이 생기네요. "파일"에 대한 읽기(r), 쓰기(w), 실행(x)은 그 의미가 명확한데, "디렉토리"에 대한 각각의 권한은 뭘 의미하는 걸까요? 음... 읽기(r)와 쓰기(w)는 어렴풋이 그 의미가 와닿는 것 같은데... 그런데 디렉토리는 "실행"이라는 개념을 적용할 수가 없으니, 애초부터 "실행(x)" 권한은 디렉토리에는 소용없는 걸까요?

 

디렉토리에 대한 권한

디렉토리는 파일을 분류하기 위해 사용합니다. 그리고 디렉토리 내부에는 다른 파일 또는 디렉토리의 리스트가 존재합니다. 본문의 시작 부분에, 파일로 할 수 있는 세 가지 작업(데이터 읽기, 데이터 쓰기, 파일 실행)에 대해 소개했는데요. 마찬가지로, 디렉토리로 할 수 있는 작업도 크게 세 가지로 나뉩니다.

  • 디렉토리에 있는 파일 및 디렉토리 리스트 읽기 (r = read)
  • 디렉토리에 파일 추가, 이름 변경, 삭제 (w = write)
  • 디렉토리에 접근. cd 명령으로 working directory 이동 (x = execute)

먼저, 읽기(r) 권한은 디렉토리에 있는 파일 리스트를 확인할 수 있는 권한을 의미합니다. 즉, "ls" 명령을 통해 디렉토리의 리스트를 확인할 때 "읽기(r)" 권한이 있어야 합니다. 만약 디렉토리에 읽기(r) 권한이 없다면, "ls" 명령을 수행할 때 "permission denied" 에러가 발생합니다. (참고로, 읽기(r) 권한만 있는 경우 "파일 이름"만 확인 가능하고, 파일의 모든 정보를 확인("ls -l")하기 위해서는 실행(x) 권한이 있어야 합니다.)

$ ls -l
total 4
d--------- 2 ppotta ppotta 4096 Mar 26 00:50 DIR
$ ls DIR
ls: cannot open directory 'DIR': Permission denied

 

다음, 쓰기(w) 권한은 디렉토리에 파일을 생성하거나, 복사, 이름 변경, 삭제 등의 작업을 하고자 할 때 필요한 권한입니다. 말 그대로 "디렉토리의 내용을 변경"하기 때문에 "쓰기(w)" 권한이 필요한 것인데요. 한 가지 주의할 점은, 쓰기(r) 권한만 있다고 해서 생성, 복사, 변경, 삭제 등의 작업이 수행되지는 않고, 실행(x) 권한도 같이 지정되어 있어야 원하는 작업이 정상적으로 수행됩니다.

마지막으로 실행(x) 권한은 디렉토리에 접근하고자 할 때 필요한 권한입니다. cd 명령을 사용해 디렉토리에 접근할 때 필요한 권한인데요. 하지만 단순히 cd 명령으로 working 디렉토리를 변경하는 경우에만 국한 된 것이 아니라, "접근" 권한이라는 이름이 내포하듯이, 디렉토리에 어떤 작업(읽기, 쓰기)을 할 때 디렉토리에 접근하기 위해 이 실행(x) 권한이 필요합니다. 즉, 실행(x) 권한 없이는 읽기(r)와 쓰기(w) 권한을 완전히 사용할 수 없습니다.

결론적으로, 아래와 같이 정리할 수 있겠네요.

  • 디렉토리의 내용을 읽기 위해서는 읽기(r) 권한 필요
  • 디렉토리의 내용을 변경하기 위해서는 쓰기(w) 권한 필요
  • 디렉토리의 접근을 위해 실행(x) 권한 필요하며 가장 기본적인 접근 권한

 

8진수(octal) 형식으로 파일 모드(mode) 지정 방법

지금까지 다소 장황하게 MODE 파라미터 문자열을 조합하여 파일 모드(mode)를 변경하는 방법에 대해 설명했는데요. 앞서 설명한 내용보다 조금 더 간단하게 파일 모드(mode)를 지정하는 방법이 있습니다. 바로, MODE 파라미터에 파일 모드(mode)를 표현하는 8진수 값을 사용하는 것입니다.

앞서 "ls -l" 명령을 통해 현재 파일의 권한을 확인하는 방법에 대해 알아보았죠? 출력된 결과의 가장 첫 번째 항목을 통해 "사용자(u)", "그룹(g)", "그 외 사용자(o)"에 대한 "읽기(r)", "쓰기(w)", "실행(x)" 권한을 확인할 수 있는데요.

"8진수" 값을 사용하는 방법은 각 권한(rwx)을 8진수 형태의 숫자 값으로 변환하여 한번에 지정하는 방법입니다. 즉, 그림의 "rwxrwxrwx" 중 "rwx"를 하나의 8진수 값으로 변환한 다음, 이 값을 연속 세 개(사용자, 그룹, 그 외 사용자)로 나열하여 전달하는 것입니다. 이 때, 권한 없음(-)은 0, 읽기(r)는 4, 쓰기(w)는 2, 그리고 실행(x)은 1에 해당하는 값을 가지며, 이 값들을 모든 더한 값이 하나의 8진수 값으로 변환됩니다.

아래 그림을 보면 조금 더 쉽게 이해하실 수 있을거라 생각되네요.

어렵지 않죠? 몇 가지 예제를 통해 8진수 형식으로 파일 모드(mode)를 지정하는 방법을 살펴보겠습니다.

  • 모든 사용자가 읽고 쓰고 실행할 수 없도록 지정
    $ chmod  000  FILE
    ---------- 1 ppotta manager   23 Mar 26 04:13 FILE
  • 모든 사용자가 읽고 쓰고 실행할 수 있는 권한 지정
    $ chmod  777  FILE
    -rwxrwxrwx 1 ppotta manager   23 Mar 26 04:13 FILE
  • 소유자는 모든 권한, 그룹 및 그 외 사용자는 읽기와 실행만 가능
    $ chmod  755  FILE
    -rwxr-xr-x 1 ppotta manager   23 Mar 26 04:13 FILE
  • 소유자 및 그룹은 읽기 가능, 그외 사용자는 권한 없음
    $ chmod  440  FILE
    -r--r----- 1 ppotta manager   23 Mar 26 04:13 FILE

8진수 형식을 이용할 때는 MODE 파라미터로 전달되는 값이 파일의 권한에 그대로 적용되기 때문에 u, g, o, a 또는 =, +, - 등과 같이 사용할 수 없습니다.

 

chmod 명령어 사용 예제 (1)

그럼 이제, 다양한 예제를 통해 chmod 사용 방법을 알아보겠습니다.

$ chmod u+x FILE                    # 파일 소유 사용자에게 실행권한 추가

$ chmod u+w FILE                    # 파일 소유 사용자에게 쓰기 권한 추가

$ chmod u=rwx FILE                  # 파일 소유 사용자에게 읽기, 쓰기, 실행 권한 지정

$ chmod u-x FILE                    # 파일 소유 사용자의 실행 권한 제거

$ chmod g+w FILE                    # 파일 소유 그룹에 쓰기 권한 추가

$ chmod g-x FILE                    # 파일 소유 그룹의 실행 권한 제거

$ chmod o=r FILE                    # 파일 소유 사용자 및 그룹을 제외한 사용자는 읽기만 가능

$ chmod a-x *                       # 현재 디렉토리의 모든 파일에서 모든 사용자의 읽기 권한 제거

$ chmod a-w FILE                    # 모든 사용자에 대해 쓰기 권한 제거

$ chmod u=rwx,g=r FILE              # 파일 소유 사용자는 모든 권한, 그룹은 읽기만 가능

$ chmod ug=rw FILE                  # 파일 소유 사용자와 그룹이 읽기, 쓰기 가능

$ chmod g=rw,o=r FILE               # 파일 소유 그룹은 읽기, 쓰기 가능, 그 외 사용자는 읽기만 가능

$ chmod ug=rw,o=r FILE              # 파일 소유 사용자 및 그룹은 일기, 쓰기 가능, 그외 사용자는 읽기만 가능

$ chmod 000 FILE                    # 모든 사용자의 모든 권한 제거 = ---------

$ chmod 664 FILE                    # 사용자(읽기+쓰기), 그룹(읽기+쓰기), 그외 사용자(읽기) = rw-rw-r--

$ chmod 755 FILE                    # 사용자(읽기+쓰기+실행), 그룹(읽기+실행), 그외 사용자(읽기+실행) = rwxr-xr-x

$ chmod 777 FILE                    # 모든 사용자에 모든 권한 추가

$ chmod -R g+x DIR                  # DIR 디렉토리 하위 모든 파일 및 디렉토리에 그룹 실행(x) 권한 추가

$ chmod -R o-wx *                   # 현재 디렉토리의 모든 파일에서 그외 사용자의 쓰기, 실행 권한 제거

$ chmod -R a-x,a+X *                # 현재 디렉토리 기준 모든 파일 읽기 권한 제거, 디렉토리 실행 권한 추가

$ chmod -R a-x+X *                  # 위(chmod -R a-x,a+X *)와 동일

$ chmod u=g FILE                    # FILE의 그룹 권한 값을 사용자 권한으로 적용
$ ls -l
-rwxr--r-- 1 ppotta manager   23 Mar 26 04:13 FILE
$ chmod u=g FILE
-r--r--r-- 1 ppotta manager   23 Mar 26 04:13 FILE

$ chmod u+g FILE                    # FILE의 사용자 권한에 그룹 권한 값을 추가
$ ls -l
-r-x-w--w- 1 ppotta manager   23 Mar 26 04:13 FILE
$ chmod u+g FILE
-rwx-w--w- 1 ppotta manager   23 Mar 26 04:13 FILE

 

X (대문자 X) 가 가진 의미

MODE 파라미터 중, X (대문자 X)에 대한 내용을 살펴보도록 하겠습니다.

  • X : "디렉토리" 또는 "실행(x) 권한이 있는 파일"에 실행(x) 권한 적용

 

X (대문자 X) : "디렉토리" 또는 "실행(x) 권한이 있는 파일"에 실행(x) 권한 적용

chmod 명령의 MODE 파라미터에 사용할 수 있는 X(대문자 X)는 "디렉토리 및 실행(x) 권한이 있는 파일에 실행(x) 권한을 적용"하고자 할 때 사용합니다. 음... 적어놓고도 그 의미가 이상하게 보이네요. 실행(x) 권한이 있는 파일에 실행(x) 권한을 적용한다니... 아무런 의미가 없는 작업인 것 같은데... 뭔가 이상합니다.

그럼, 살짝 다르게 표현해볼게요.

X(대문자 X)는 권한 지정 대상이 "실행(x) 권한을 가져도 괜찮은 경우에만 실행 권한을 지정"하고자 할 때 사용합니다.

조금은 더 그 의미가 와닿나요? 조금 더 설명해볼게요.

 

리눅스에서의 실행 가능 파일

리눅스에서, 파일이 실행 가능한지 여부는 확장자 또는 파일 형식에 의해 결정되지 않습니다. 파일이 실행(x) 권한을 가지고 있는지에 따라 결정되죠. 이러한 특징은, 시스템 관리와 사용 측면에서 많은 이점을 가져다주지만, 사용자의 사소한 실수 하나에 큰 위험이 발생할 수 있는 단점 또한 가지고 있습니다.

예를 들어, 아래와 같은 내용을 가진 "test"라는 텍스트 파일이 있을 때,

echo 'TEST'

 

파일 "test"가 실행(x) 권한을 가지면 쉘에서 "test"를 실행하고 그 결과(echo 명령 실행)를 확인할 수 있습니다.

$ ls -l
-rwxr-xr-x 1 ppotta ppotta 11 Mar 31 23:09 test
$ cat test
echo 'TEST'
$ ./test
TEST

 

즉, 텍스트 파일에 실행할 명령을 나열해 두고 실행(x) 권한을 준 다음 파일을 실행하면, 파일에 나열된 명령(예제의 echo 명령)들을 한번에 실행할 수 있는 것이죠. 매우 간편해 보이네요. 한번에 실행할 명령들을 쭉 나열해두고, 실행(x) 권한을 준 다음 실행하면 정말 편하게 사용할 수 있을 것 같습니다. (물론, 리눅스에는 그런 용도를 위한 쉘스크립트(shell script)라는게 있지요.)

그런데 만약 어떤 파일에 실행 목적이 아닌 기록 목적으로 "rm -rf *"라는 문장을 적어두었는데, 그 파일이 실행 권한을 가지게 되고 실행될 수 있다면 어떻게 될까요? 으.. 생각만 해도 끔찍하네요.

물론 이런 파일에 실행(x) 권한을 주지 않으면 전혀 문제될 게 없습니다. 일부러 실행(x) 권한을 줄 이유도 없고요. 하지만 시스템을 사용하다보면 의도치 않게 파일의 속성을 변경해버리는 경우가 가끔 생깁니다.

음, 하나의 경우를 가정해볼까요? 어느 날 우연히, 어떤 디렉토리 하위의 몇 개의 디렉토리들에 실행(x) 옵션이 빠져 있는 걸 발견했습니다. 파일을 일일이 찾아서 실행(x) 옵션을 추가하려니 번거롭게 느껴지네요. 그래서, 간단하게 "+x"를 적용하여 실행 권한을 추가하기로 결정합니다. 물론 하위 디렉토리를 모두 바꿔야 하니 "-R" 옵션을 적용하겠죠. (chmod -R +x *)

$ ls -l
drw-r--r-- 2 ppotta ppotta 4096 Mar 31 23:59 DIR
-rw-r--r-- 1 ppotta ppotta   12 Mar 31 23:37 test
$ chmod -R +x *
$ ls -l
drwxr-xr-x 2 ppotta ppotta 4096 Mar 31 23:59 DIR
-rwxr-xr-x 1 ppotta ppotta   12 Mar 31 23:37 test

 

실행 결과를 확인해보면 디렉토리(DIR)에 실행(x) 권한이 정상적으로 적용된 것을 확인할 수 있는데요. 하지만 디렉토리가 아닌, "test" 파일("rm -rf *"가 기록된)에도 실행(x) 권한이 적용되어 버렸네요. 아주 위험한 파일이 실행(x) 권한을 가지게 되어 버렸습니다.

 

안전하게 실행(x) 권한 지정

자, 이제 X (대문자 X)의 설명으로 다시 돌아가 볼까요? 이제 그 의미가 이해되실거라 생각되네요.

chmod에서 X(대문자 X)는 "대상이 실행(x) 권한을 가져도 괜찮은 경우에만 실행 권한을 지정"할 때 사용하며, 이 때 실행(x) 권한을 가져도 괜찮은 대상은 "디렉토리" 또는 "이미 실행(x) 권한을 가진 파일"을 말합니다. 즉, 기존에 실행(x) 권한이 없던 파일에는 실행(x) 권한을 주고 싶지 않을 때, x (소문자 x) 대신 X (대문자 X)를 사용하는 것이죠.

$ ls -l
drw-r--r-- 2 ppotta ppotta 4096 Mar 31 23:59 DIR
-rw-r--r-- 1 ppotta ppotta   12 Mar 31 23:37 test
$ chmod -R a+X *
$ ls -l
drwxr-xr-x 2 ppotta ppotta 4096 Mar 31 23:59 DIR
-rw-r--r-- 1 ppotta ppotta   12 Mar 31 23:37 test

 

-X

X(대문자 X)와 -(제거)를 같이 사용하면, x(소문자 x)를 사용하는 것과 동일한 결과가 나옵니다. 참고로 "-X"는 "a-X"와 동일한 표현입니다. "chmod -R -X *"에서 "-X"를 보고 "-R"처럼 chmod 명령에 사용할 수 있는 OPTION 중 하나라는 오해를 하지는 않길 바랍니다. "chmod -R -X *"는 "chmod -R a-X *"와 같은 의미입니다.

$ ls -l
drwxr-xr-x 2 ppotta ppotta 4096 Mar 31 23:59 DIR
-rwxr-xr-x 1 ppotta ppotta   12 Mar 31 23:37 test
$ chmod -R -X *
$ ls -l
drw-r--r-- 2 ppotta ppotta 4096 Mar 31 23:59 DIR
-rw-r--r-- 1 ppotta ppotta   12 Mar 31 23:37 test

 

chmod 명령어 사용 예제 (2)

아래 정리한 내용에서 X(대문자 X)를 사용하는 예제를 참고하시기 바랍니다.

$ chmod u+X FILE                    # FILE이 실행 권한을 가진 경우에만 파일 소유 사용자에게 실행 권한 추가.

$ chmod -R a-x,a+X *                # 현재 디렉토리 아래 모든 파일의 실행 권한 제거, 디렉토리 실행 권한 추가.

$ chmod -R a-x+X *                  # 위(chmod -R a-x,a+X *)와 동일.

 

참고사이트