[23-01/유닉스 시스템] 파일 접근 권한 관리하기
1. 파일의 속성
다중 사용자 시스템의 특징
- 여러 사람이 하나의 시스템 사용
- 다른 사람이 내 파일을 읽거나 수정, 삭제 할 수 없도록 보안 필요
- 다른 사용자의 무단 접근으로부터 자신의 파일을 보호하는 기능으로 파일에 접근 권한을 부여하여 권한 만큼만 파일을 사용
파일의 속성
- 파일 종류
- 파일 접근 권한
- 하드 링크 개수
- 파일 소유자의 사용자 이름
- 파일이 속한 그룹 이름
- 파일 크기
- 파일의 마지막 수정 일시
■ 파일의 속성
- 유닉스에서 파일을 관리하기 위해 저장하는 정보들
- ls -l 명령으로 파일 속성을 확인할 수 있음
번호 | 속성 값 | 의미 |
1 | - | 파일 종류(- : 일반 파일, d : 디렉토리) |
2 | rw-r--r-- | 파일을 읽고, 쓰고, 실행할 수 있는 접근 권한 표시 |
3 | 1 | 하드 링크 수 |
4 | user1 | 파일 소유자의 로그인 ID |
5 | staff | 파일 소유자의 그룹 이름 |
6 | 193 | 파일의 크기(바이트 단위) |
7 | Jun 19 20:24 | 파일이 마지막으로 수정된 일시 |
8 | first.dat | 파일명 |
■ 파일 종류
file 파일명
문자 | 파일 유형 |
- | 일반 (정규) 파일 |
d | 디렉토리 파일 |
b | 블럭 단위로 읽고 쓰는 블럭 장치 특수 파일 |
c | 문자 단위로 읽고 쓰는 문자 장치 특수 파일 |
| | 기호적 링크 |
p | 파이프 |
s | 소켓 |
● 사용 예
■ 파일이 속한 그룹 이름
groups [ 사용자명 ]
- 사용자명 지정
- 인자로 지정한 사용자가 속한 그룹 이름 출력
- 인자가 없으면
- 자신이 속한 그룹 이름 출력
● 사용 예
2. 파일의 접근 권한
- 파일을 읽고, 쓰고, 실행할 수 있는 권한
- 다중 사용자 시스템의 가장 기본적인 보안 기능
유닉스의 사용자 카테고리
● 소유자
- 일반적으로 파일을 생성한 사용자. 명령을 통해 변경할 수도 있음
● 그룹
- 파일과 동일한 그룹에 속한 사용자들
- 파일이 속한 그룹?
- 일반적으로 파일을 생성한 사용자의 기본 그룹
- 상위 디렉토리에 특수한 권한(setgid)이 부여된 경우 다른 그룹으로 지정
- 명령을 이용하여 변경 가능
● 기타 사용자
- 소유자나 그룹 카테고리에 속하지 않은 모든 사용자들
접근 권한은 카테고리 별로 다르게 부여
기본 권한
- 읽기(r), 쓰기(w), 실행(x)
- 파일의 종류에 따라 의미 다름
권한 | 파일 | 디렉토리 |
읽기 | 파일을 읽거나 복사할 수 있음 | ls 명령으로 디렉토리 목록을 볼 수 있음 (ls 명령의 옵션은 실행 권한이 있어야 사용할 수 있음) |
쓰기 | 파일을 수정, 이동, 삭제할 수 있음 (디렉토리에 쓰기 권한 있어야 함) |
파일을 생성하거나 삭제할 수 있음 |
실행 | 파일을 실행할 수 있음 (셸 스크립트나 실행 파일의 경우) |
cd 명령의 사용이 가능함 파일을 디렉토리로 이동하거나 복사할 수 있음 |
접근 권한 표기 방법
■ 문자의 의미
- r : 읽기 허가, w : 쓰기 허가, x : 실행 허가, - : 허가 취소
■ 다양한 사용 권한 조합
접근 권한 | 의미 |
rwxr-xr-x | 소유자는 읽기, 쓰기, 실행 권한 모두 가짐. 그룹사용자와 기타사용자는 읽기와 실행 권한만 가짐. |
r-xr-xr-x | 소유자, 그룹사용자, 기타사용자 모두 읽기와 실행 권한만 가짐 |
rw------- | 소유자만 읽기, 쓰기 권한 가짐. |
rw-rw-rw- | 소유자, 그룹사용자, 기타사용자 모두 읽기와 쓰기 권한만 가짐 |
rwxrwxrwx | 소유자, 그룹, 기타사용자 모두 읽기, 쓰기, 실행 권한 가짐 |
rwx------ | 소유자만 읽기, 쓰기, 실행 권한 가짐 |
3. 기호를 이용한 파일 접근 권한 변경
파일의 사용 권한 변경
chmod [ 옵션 ] 모드 파일명
- 자신이 소유한 파일의 사용 권한을 변경
■ 옵션
- -R : 하위 디렉토리까지 모두 변경
■ 모드
- 변경할 사용 권한 표시
- 종류 : 기호 모드, 8진수 모드
기호 모드를 이용한 권한 변경
chmod 사용자카테고리 연산자 권한 파일명
memo : 사용자카테고리, 연산자, 권한이 기호모드
ex) u + w, u-x, g+x, g-wx, o=rwx, go-wx, a= rwx
■ 사용자 카테고리
사용자 카테고리 | 의미 |
u | 소유자 |
g | 그룹 |
o | 기타 사용자 |
a | 모든 사용자 (u+g+o) |
■ 연산자 기호
연산자 기호 | 의미 |
+ | 허가권 부여 |
- | 허가권 제거 |
= | 특정 사용자에게 허가권 지정 |
■ 권한 기호
권한 기호 | 의미 |
r | 읽기 허가 |
w | 쓰기 허가 |
x | 실행 허가 |
4. 숫자를 이용한 파일 접근 권한 변경
숫자 모드
- 숫자를 이용해 접근 권한 표현
- 모든 카테고리의 접근 권한을 동시에 조정할 때 기호모드보다 편리
- 각 카테고리 별로 접근 권한을 하나의 8진수로 표현
- 3개의 8진수를 사용해 전체 접근 권한 표기
■ 표시 방법
- 권한이 있으면 1, 없으면 0으로 표시
소유자 | 그룹 | 기타사용자 | |
사용권한 | rwx | r-x | r-x |
2진수로 대체 | 111 | 101 | 101 |
8진수로 변환 | 7 | 5 | 5 |
진법
- 수를 표시하는 방법 중 하나
- 수를 표현하는데 0 ~ p-1까지 p개의 기호를 사용하면 p진법이라 함
- 위치에 따라 값을 다르게 보는 위치적 기수법을 사용함
● 10진수
- 자리값이 올라감에 따라 값이 10배씩 커짐
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 등 10개의 문자로 수 표현
● 2진수
- 자리값이 올라감에 따라 값이 두배씩 커짐
- 0, 1 두 개의 문자로 수 표현
● 8진수
- 자리값이 올라감에 다라 값이 8배씩 커짐
0, 1, 2, 3, 4, 5, 6, 7 등 8개의 문자로 수 표현
접근 권한과 8진수의 대응 관계
기호 | 숫자(2진수) | 숫자(8진수) | 의미 |
rwx | 111 | 7 | 읽기, 쓰기, 실행 |
rw- | 110 | 6 | 읽기, 쓰기 |
r-x | 101 | 5 | 읽기, 실행 |
r-- | 100 | 4 | 읽기 |
-wx | 011 | 3 | 쓰기, 실행 |
-w- | 010 | 2 | 쓰기 |
--x | 001 | 1 | 실행 |
--- | 000 | 0 | 권한 없음 |
숫자 모드를 이용한 접근 권한 변경
chmod 소유자8진수 그룹8진수 기타8진수 파일명
5. 기본 접근 권한의 설정
기본 접근 권한
- 유닉스에서 새로운 파일이나 디렉토리를 만들때 부여되는 접근 권한
파일 | 기본 접근 허가권 |
실행할 수 없는 일반 파일 (문서 편집기로 생성한 파일) |
666 |
실행할 수 있는 일반 파일 | 777 |
디렉토리 | 777 |
기본 접근권한을 출력하거나 변경
umask [ 마스크값 ]
■ 마스크 값
- 파일이나 디렉토리 생성시 부여하지 않을 권한 지정
- 이 값을 지정하면 지정한 마스크를 이용해 기본 접근 권한 지정
- 지정하지 않으면 현재 설정된 마스크값 출력
■ 사용 예
마스크
- 가리다
- 사용 권한에서 허용하지 않을 값을 지정
■ 마스크를 이용한 접근 권한 생성
- 기본사용 권한 XOR 마스크
■ 간단한 계산 방법
■ 대표적 마스크 값
- 기본 사용 권한 XOR 마스크
마스크 값 | 일반 파일 적용결과 | 디렉토리 적용결과 | 의미 |
022 | 644 | 755 | 그룹과 기타 사용자의 쓰기 권한 제거 |
077 | 600 | 700 | 그룹과 기타 사용자의 접근 권한 모두 제거 |
027 | 640 | 750 | 그룹의 쓰기 권한 제거, 기타 사용자의 접근 권한 모두 제거 |