CS/Linux

권한 시스템과 chmod

dragonhyeon 2024. 9. 27. 18:47
728x90
반응형

권한 시스템

Unix 기반 운영체제에서 권한 시스템은 파일과 디렉터리에 대한 접근을 제어하는 메커니즘입니다. 세 가지 사용자 그룹에 대해 세 가지 권한 유형을 설정하여 누가 어떤 자원에 접근할 수 있는지를 관리하는 중요한 보안 요소입니다. 이는 다중 사용자 환경에서 파일을 안전하게 보호하고, 사용자 간의 불필요한 접근을 방지합니다.

  • 사용자 그룹:
    • 소유자 (Owner) : 파일을 소유한 사용자.
    • 그룹 (Group) : 파일이 속한 그룹.
    • 기타 사용자 (Others) : 위 두 그룹 외의 모든 사용자.
  • 권한 유형:
    • 읽기 (read) :
      • 파일의 내용을 읽을 수 있는 권한.
      • 디렉터리의 경우 목록을 볼 수 있는 권한.
    • 쓰기 (write) : 
      • 파일을 수정할 수 있는 권한.
      • 디렉터리의 경우 디렉터리 내 파일을 생성 또는 삭제할 수 있는 권한.
    • 실행 (execute) :
      • 파일을 실행할 수 있는 권한.
      • 디렉터리의 경우, 그 디렉터리 내로 이동할 수 있는 권한.

chmod

chmod 는 Unix 기반 운영체제에서 파일이나 디렉터리의 권한을 설정하거나 변경할 때 사용하는 명령어입니다. chmod 명령어는 권한을 설정할 때 숫자 표기법 또는 기호 표기법을 사용할 수 있습니다.

숫자 표기법

숫자 표기법에서는 예를 들어  chmod 754 sample.sh 와 같이 세 개의 숫자로 권한을 설정합니다. 각 숫자는 소유자, 그룹, 기타 사용자에 대한 각각의 권한을 나타내며 읽기, 쓰기, 실행 권한을 의미하는 비트를 합한 값입니다.

  • 읽기: 4
  • 쓰기: 2
  • 실행: 1

chmod 754 sample.sh 의 경우 다음과 같이 해석할 수 있습니다.

sample.sh 파일에 대해
소유자에게 읽기, 쓰기, 실행 권한 지정 (4 + 2 + 1 = 7)
그룹에게 읽기, 실행 권한 지정 (4 + 0 + 1 = 5)
기타 사용자에게 읽기 권한 지정 (4 + 0 + 0 = 4)

기호 표기법

기호 표기법에서는 예를 들어 chmod u=rxw,g=rx,o=r sample.sh 와 같이 기호의 조합으로 권한을 설정합니다.

  • u (user) : 소유자
  • g (group) : 그룹
  • o (others) : 기타 사용자
  • a (all) : 모든 사용자
  • +: 권한 추가
  • -: 권한 제거
  • =: 권한 지정
    • 지정한 사용자에 대해 기존의 모든 권한을 제거하고 새롭게 지정된 권한으로 덮어씌웁니다.
  • r (read) : 읽기 권한
  • w (write) : 쓰기 권한
  • x (execute) : 실행 권한
쉼표 (,) 를 사용하여 각 권한 설정의 사용자 그룹을 구분합니다. 쉼표 뒤에는 띄어쓰기를 넣지 않아야 합니다.

 

chmod a=rwx sample.sh 의 경우 다음과 같이 해석할 수 있습니다.

sample.sh 파일에 대해
모든 사용자에게 (a)
기존의 모든 권한은 제거하고 읽기, 쓰기, 실행 권한 지정 (=rxw)

 

chmod u=,g+x,o+r-wx sample.sh 의 경우 다음과 같이 해석할 수 있습니다.

sample.sh 파일에 대해
소유자에게 (u)
기존의 모든 권한은 제거하고 어떠한 권한도 지정하지 않음 (=)
그룹에게 (g)
실행 권한 추가 (+x)
기타 사용자에게 (o)
읽기 권한 추가, 쓰기, 실행 권한 제거 (+r-wx)

ls -l

파일과 디렉터리의 권한을 확인하려면 ls -l 명령어를 사용할 수 있습니다. 해당 명령어를 사용하면 다음과 같은 출력을 확인할 수 있습니다.

total 4
-rw-rw-r-- 1 username01 username01 20 Sep 27 09:21 sample.sh

 

각 필드의 의미를 설명하면 다음과 같습니다.

필드 값 필드 설명
-rw-rw-r-- 파일의 유형과 권한 (소유자, 그룹, 기타 사용자의 권한)
1 하드 링크 수
username01 파일 소유자
username01 파일 소유자가 속한 그룹
20 파일 크기 (바이트 단위)
Sep 27 09:21 마지막 수정 날짜 및 시간
sample.sh 파일 이름

 

-rw-rw-r-- 를 살펴보면

  • 첫 번째 문자는 파일의 종류를 나타냅니다.
    • -: 일반 파일 (regular file)
    • d: 디렉터리 (directory)
    • l: 심볼릭 링크 (symbolic link)
    • c: 문자 장치 파일 (character device)
    • b: 블록 장치 파일 (block device)
  • 나머지 9개의 문자는 파일의 권한을 나타냅니다. 이 부분은 3자리씩 구분되어 소유자 (user), 그룹 (group), 기타 사용자 (others) 의 권한을 나타내며 읽기, 쓰기, 실행 권한 순서대로 권한 여부를 나타냅니다.
    • r: 읽기 권한 (read)
    • w: 쓰기 권한 (write)
    • x: 실행 권한 (execute)
    • -: 해당 권한 없음
total 4 는 해당 디렉터리에 속한 파일들이 차지하고 있는 디스크 블록의 총합을 의미합니다.
728x90
반응형