권한 시스템
Unix 기반 운영체제에서 권한 시스템은 파일과 디렉터리에 대한 접근을 제어하는 메커니즘입니다. 세 가지 사용자 그룹에 대해 세 가지 권한 유형을 설정하여 누가 어떤 자원에 접근할 수 있는지를 관리하는 중요한 보안 요소입니다. 이는 다중 사용자 환경에서 파일을 안전하게 보호하고, 사용자 간의 불필요한 접근을 방지합니다.
- 사용자 그룹:
- 소유자 (Owner) : 파일을 소유한 사용자.
- 그룹 (Group) : 파일이 속한 그룹.
- 기타 사용자 (Others) : 위 두 그룹 외의 모든 사용자.
- 권한 유형:
- 읽기 (read) :
- 파일의 내용을 읽을 수 있는 권한.
- 디렉터리의 경우 목록을 볼 수 있는 권한.
- 쓰기 (write) :
- 파일을 수정할 수 있는 권한.
- 디렉터리의 경우 디렉터리 내 파일을 생성 또는 삭제할 수 있는 권한.
- 실행 (execute) :
- 파일을 실행할 수 있는 권한.
- 디렉터리의 경우, 그 디렉터리 내로 이동할 수 있는 권한.
- 읽기 (read) :
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 는 해당 디렉터리에 속한 파일들이 차지하고 있는 디스크 블록의 총합을 의미합니다.
'CS > Linux' 카테고리의 다른 글
Linux 자주 사용하는 명령어 모음 (touch, echo, cat, grep, ls, tail, cut) (5) | 2024.10.23 |
---|---|
source ~/.bashrc 설명 (2) | 2024.09.26 |
#!/bin/bash vs #!/usr/bin/env bash (4) | 2024.09.22 |
useradd, userdel, usermod 등 명령어 설명 (4) | 2024.09.21 |
Linux 사용자 계정, sudo, su, su - 설명 (5) | 2024.09.21 |