파일의 속성
- 파일 접근 권한 보호
- 리눅스는 파일에 무단으로 접근하는 것을 방지하고 보호하는 기능 제공
- 사용자는 자신의 파일과 디렉터리 중에서 다른 사용자가 접근해도 되는 것과 그렇지 않은 것을 구분하여 접근 권한 제한
- 파일의 종류: file
- 파일 속성의 첫 번째 항목은 파일의 종류를 표시 (-: 일반 파일, d: 디렉터리)
- 기능: 파일의 종류를 알려주는 명령
- 형식: file [파일]
- 파일의 접근 권한 표시
- 파일의 소유자와 그룹이나 기타 사용자들이 파일에 대해 가지고 있는 접근 권한을 표시
- 하드 링크의 개수
- 하드 링크: 한 파일에 대해 여러 개의 파일명을 가질 수 있도록 하는 기능
- 파일 소유자의 로그인 ID
- 리눅스에서 모든 파일은 소유자가 있음
- 파일 소유자의 그룹 이름: groups
- ls -l 명령에서 출력되는 그룹명은 파일이 속한 그룹
- 사용자가 속한 기본 그룹은 시스템 관리자가 사용자를 등록할 때 결정
- 기능: 사용자가 속한 그룹을 알려주는 명령
- 형식: groups [사용자명]
- 파일의 크기: 바이트 단위
- 파일이 마지막으로 수정된 날짜
접근 권한
접근 권한의 종류
- 읽기 권한, 쓰기 권한, 실행 권한 등 세 가지로 구성
- 소유자 / 그룹 / 기타 사용자 권한 (ex. rwxr-xr-x)
권한 | 파일 | 디렉터리 |
읽기 | 파일을 읽거나 복사 가능 | ls 명령으로 디렉터리 목록을 볼 수 있음 (ls 명령의 옵션은 실행 권한이 있어야 사용 가능) |
쓰기 | 파일을 수정·이동·삭제 가능 (디렉터리에 쓰기 권한이 있어야 함) |
파일을 생성하거나 삭제 가능 |
실행 | 파일을 실행 가능 (셸 스크립트나 실행 파일의 경우) |
cd 명령을 사용 가능 → 파일을 디렉터리로 이동하거나 복사 가능 |
접근 권한의 변경
- chmod
- 기능: 파일이나 디렉터리의 접근 권한 변경
- 형식: chmod [옵션] 권한 모드 파일 또는 디렉터리
- -R 옵션 사용 시 하위 디렉터리까지 모두 변경 가능
- 권한 모드
- 기호 모드: 접근 권한을 변경하기 위해 문자와 기호를 사용하여 권한 표시
- 숫자 모드: 접근 권한을 변경하기 위해 숫자 사용
기호 모드
구분 | 문자/기호 | 의미 |
사용자 카테고리 문자 |
u | 파일 소유자 |
g | 소유자가 속한 그룹 | |
o | 소유자와 그룹 이외의 기타 사용자 |
|
a | 전체 사용자 | |
연산자 기호 | + | 권한 부여 |
- | 권한 제거 | |
= | 접근 권한 설정 | |
접근 권한 문자 | r | 읽기 권한 |
w | 쓰기 권한 | |
x | 실행 권한 |
숫자 모드
- 권한 묶음(rwx)를 2진수로 대체하여 합산
- rwx일 경우 2²+2+1 = 7
- 숫자의 각 위치가 사용자 카테고리를 나타내기 때문에 사용자 카테고리를 따로 지정할 필요가 없음
- 항상 세 자리 수를 사용해야 하므로 변경하려는 사용자 카테고리의 권한뿐만 아니라 그룹과 기타 사용자의 권한도 반드시 같이 명시 (ex. chmod 755)
기본 접근 권한 설정
- 리눅스에서는 파일이나 디렉터리를 생성할 때 기본 접근 권한이 자동적으로 설정
- 일반 파일의 경우
- 소유자 & 그룹: rw-
- 기타 사용자: r--
- 디렉터리의 경우
- 소유자 & 그룹: rwx
- 기타 사용자: r-x
- umask: 기본 접근 권한을 출력하거나 변경, 인자 없이 사용하면 기본 마스크 값 출력
마스크 값
- 파일이나 디렉터리 생성 시 부여하지 않을 권한을 지정해놓는 것
- 002일 경우 -------w-이고, 기타 사용자에게 쓰기 권한은 부여하지 않겠다는 의미
- 마스크 값을 바꾸면 파일이나 디렉터리를 생성할 때 적용되는 기본 접근 권한도 변경
- 022: 파일 644 / 디렉터리 755
- 077: 파일 600 / 디렉터리 700
- 027: 파일 640 / 디렉터리 750
- umask로 마스크 값을 바꿀 때 파일과 디렉터리에 모두 적용해봐야 함
- 마스크 값이 파일에는 적합하지만 디렉터리에는 적합하지 않을 수 있음
특수 접근 권한
- 접근 권한은 원래 4자리
- 생략된 맨 앞자리는 특수 접근 권한
- 맨 앞자리 숫자가 0이면 일반적인 접근 권한이지만 이 숫자가 1, 2, 4이면 특수 접근 권한이 설정됨
- SetUID: 4
- SetGID: 2
- Sticky bit: 1
SetUID
- 해당 파일이 실행되는 동안에는 파일을 실행한 사용자의 권한이 아니라 파일 소유자의 권한으로 실행
- 접근 권한에서 맨 앞자리에 4를 설정
- SetUID가 설정되면 소유자의 실행 권한에 's'가 표시
- /etc/shadow 파일은 루트 계정으로만 수정 가능
- passwd 명령은 SetUID가 설정되어 있기 때문에 소유자인 root 권한으로 실행이 되어 암호 변경 가능
- SetUID를 이용한 해킹도 등장하여 보안에 신경을 써야 함
SetGID
- SetGID가 설정된 파일을 실행하면 해당 파일이 실행되는 동안에는 파일 소유 그룹의 권한으로 실행
- 접근 권한에서 맨 앞자리에 2를 설정
Sticky bit
- 디렉터리에 설정
- 설정 시 해당 디렉터리에는 누구나 파일을 생성 가능
- 파일을 생성한 계정으로 파일 소유자가 설정되며, 다른 사용자가 생성한 파일은 삭제 불가
- /tmp 디렉터리가 대표적
- 접근 권한에서 맨 앞자리에 1을 설정