3 분 소요

📝리눅스 파일 권한 명령어 정리(chmod, chown, chgrp)

  • 리눅스에서 파일, 디렉토리 권한을 설정, 변경하고 소유권을 변경하는 방법에 대해 알아보겠습니다.

먼저 권한을 확인하는 명령어인 ls -al명령어를 통해 파일과 디렉토리 리스트를 출력하면 권한을 확인할수 있습니다.

출력 결과는 각각 파일종류 및 권한(퍼미션), 링크수, 사용자(소유자), 그룹, 파일크기, 수정시간, 파일이름을 나타냅니다.

여기서 권한은 ‘drwxr-xr-x’ 부분이고 소유권은 ‘pi pi’로 확인할수 있습니다. 앞의 pi는 사용자를 나타내며 뒤의 pi는 그룹을 나태냅니다. 첫 글자가 d로 시작하면 디렉토리라는 의미로, - 일 경우는 일반 파일로 해석하면 됩니다.

이 외에도 첫번째 문자의 의미를 정리하면 아래와 같습니다.

d 디렉토리(directory)
b 블록 타입 특수 파일(block special)
c 문자 타입 특수 파일(character special)
l 심볼릭 링크(symbolic link)
p 파이프(pipe)
s 소켓(socket)
- 일반 파일(regular file)

첫 글자를 제외한 뒤의 9개의 문자는 3글자씩 끊어서 소유자, 그룹 사용자, 기타 사용자의 권한을 표시합니다. 3글자씩 끊는 이유는 파일에 부여할 수 있는 권한은 기본적으로 읽기, 쓰기, 실행 3가지의 형태가 있기 때문입니다.

  • 읽기 권한(r) : 파일을 열어볼 수 있고, 파일의 수정은 불가능하나 복사는 가능합니다.
  • 쓰기 권한(w) : 파일에 덧붙여 쓸 수 있습니다. 즉, 읽기 권한과 쓰기 권한을 같이 가진 rw_ 형태의 파일이라면 파일 편집이 가능하다는 것입니다. 읽기 권한 없이 쓰기 권한만 있다면 기존의 파일 뒤에 정보를 덧붙일 수 있는 것만 가능합니다.
  • 실행 권한(x) : 파일을 실행할 수 있습니다.

예를 들어보겠습니다.

  • ---: 접근 불가능한 파일
  • r--: 읽기만 가능한 파일
  • r-x: 읽기와 실행이 가능한 파일(프로그램 같은 파일)
  • rw-: 읽기와 쓰기가 가능한 파일(일반 파일)
  • rwx: 모든 권한을 가진 파일

디렉토리에 대한 파일 권한 역시 일반 파일과 동일합니다. 디렉토리 권한에 대한 몇 가지 상황을 생각해 보겠습니다.

  1. 디렉토리에서 쓰기 권한(w)이 없다면 파일을 수정하고 생성하는 것 등이 불가능합니다.

  2. 실행 권한(x) 이 없다면 디렉토리로 접근하는 것(cd)가 불가능해집니다.

  3. 읽기 권한(r)만 부여할 경우 디렉토리에 저장된 항목은 조회할 수 있지만 해당 디렉토리에 저장된 파일은 조회할 수 없습니다. 즉, 어떤 파일이 있다는 것만 알 수 있습니다.

  4. 디렉토리에 실행 권한(x)만 부여할 경우, 디렉토리 내 파일 목록을 볼 수 없습니다. 이 말은 읽기 권한(r)이 없어 ls-al로 조회해도 디렉토리 내의 파일을 알 수 없습니다. 하지만 실행 권한(x)은 있어 어떤 파일이 저장되어 있는지 이미 알고 있다면 파일을 조회하는 것은 가능합니다. 주의할 점은 이 경우에는 파일의 결로와 이름이 정확하게 입력해야 조회할 수 있습니다.

  5. 디렉토리에 쓰레 권한( w)만 부여한 경우는 아무 권한도 부여하지 않은 상태와 동일합니다.


파일 권한 숫자 ( 옥텟 8진수)

위에서 살펴 봤듯이, 파일 권한을 구분하는 경우 크게 3가지로 분류할 수 있습니다.

읽기(r) Reading 4
쓰기(w) Writing 2
실행(x) Executing 1
–x -w- -wx r– r-x rw- rwx
0 1 2 3 4 5 6 7
  • 파일 또는 디렉토리를 생성할 때 umask권한 값을 결정하는 명령어입니다.umask는 리눅스가 설치될때 기본적으로 022값으로 설정되어있습니다. 값은 설정 가능합니다.
  기본 권한(8 진수) 기본 권한(문자)
파일 644 rw-r–r–
디렉토리 755 rwxr-xr-x
  • 권한 관련 파일 및 디렉토리 명령어 입니다. 즉 권한에 따라 영향을 받는 파일 및 디렉토리 명령어 입니다.
명령어 파일 디렉토리
읽기 more, cat, gead, tail ls
쓰기 vi편집기로 내용 수정 touch, mkdir, mv, cp, rm
실행 파일 이름 cd

chmod명령어를 사용해 권한 부여해보겠습니다.

  • chmod(change mode): 파일이나 디렉토리에 권한을 수정할 때 사용합니다. 각 user, group, other, all(전부)에게 권한을 지정할 수 있습니다, 더하기(+)를 사용해 권한을 추가하고, 빼기(-)를 사용해 권한을 제거할 수 있습니다. ”=”으로는 권한을 직접 지정할 수 있습니다.

    • 예를 들어 보겠습니다.
    • chmod g+x [파일명]: 그룹에 실행 권한을 줍니다.
    • chmod o-w [파일명]: 다른 사용자에게 쓰기 권한을 빼앗습니다.
    • chmod a=rw [파일명]: 모든 사용자에게 읽기, 쓰기 권한을 지정합니다.
  • 위의 방식은 다른 대상은 건드리지 않고 특정 대산에 대한 권한만 간단하게 지정할 수 있지만, 한꺼번에 수정할 경우에는 번거로울 수 있습니다. 이럴 때는 위에 설명한 권한을 나타내는 숫자를 이용해 한번에 권한을 변경할 수 있습니다.

    chmod {user 권한 숫자}{group 권한 숫자}{other 권한 숫자}[파일명] 의 형식을 통해 권한을 변경할 수 있습니다.

    • 예를 들어보겠습니다.
    • chmod 000 [파일명] : user, group, other에 있는 모든 권한을 제거합니다.
    • chmod 777 [파일명] : user, group, other에 대한 모든 권한을 추가합니다.
    • chmod 743 [파일명] : user에게는 모든 권한이 허용되고, group에는 읽기 권한(r)만, other에 대해서는 실행 권한 (x), 쓰기 권한(w)만 줍니다.
    • 위에서 설명한 바와 마찬가지로 읽기 권한(r)은 4, 쓰기 권한(w)는 2, 실행 권한(x)는 1로 나타낼 수 있고, 필요한 권한을 모두 더한 값으로 각 사용자의 권한을 지정할 수 있습니다.
  • -R을 사용하면 하위 디렉토리와 그 안의 파일 권한까지 변경할 수 있습니다.

    • 예를 들어보겠습니다
    • chmod -R 7-- [디렉토리명] : 해당 디렉토리 하위에 위치한 모든 파일 및 디렉토리에 user의 읽기, 쓰기, 실행 권한만 주고 나머지의 권한은 없앱니다.

chown, chgrp를 사용해 파일 소유권을 변경하기

  • 위에서 설명한 chmod 명령어는 파일이나 디렉토리의 권한을 변경하는 역할을 했습니다. chown, chgrp의 역할도 알아보겠습니다.

    • chown(change ownership): 파일이나 디렉토리의 사용자(소유자)를 변경할 때 사용합니다.

    • chgrp(change group): 파일이나 디렉토리의 그룹을 변경할 때 사용합니다.

      즉, chown이나 chgrp 모두 파일이나 디렉토리의 소유권을 변경할 때 사용합니다.

    • 예를 들어보겠습니다.

      • sudo chown user1 [파일명] : 파일 사용자를 user1으로 변경합니다.

      • sudo chgrp user1 [파일명] : 파일 그룹을 user2으로 변경했습니다.

        • 그룹만 변경할 때 chgrp 명령어를 사용합니다. 일반 사용자는 자신이 속한 그룹으로만 변경이 가능합니다.

          sudo chown user3.user3 [파일명] : chown 명령어를 통해 사용자와 그룹을 동시에 변경할 수 있습니다. 이때 권한 설정할 때와 같이 -R을 사용하면 하위 디렉토리와 그 안의 파일 소유권까지 변경할 수 있습니다.

댓글남기기