접근 권한
파일에는 읽기, 쓰기, 실행 권한을 나타내는 속성이 있으며, ls -l 명령으로 확인 가능하다.
접근 권한은 사용자의 파일을 보호하는 가장 기본적인 보안 기능이다.
3가지 카테고리(소유자, 그룹, 기타 사용자)로 구분하여 각 카테고리별로 읽기, 쓰기, 실행 권한을 부여한다.
접근 권한 표기 방법
파일의 접근 권한을 사용자 카테고리별로 문자로 표현한다.
읽기 권한은 r, 쓰기 권한은 w, 실행 권한은 x로 표기하고 해당 권한이 없으면 -로 표기한다.
사용자 카테고리별로 rwx 세 문자씩 묶어서 표기한다.
기호를 이용한 접근 권한 변경
chmod 명령을 통해 접근 권한을 변경할 수 있으며 기호나 숫자로 권한을 적용할 수 있다.
기호 모드에서는 소유자를 u, 그룹을 g, 기타 사용자를 o, 전체 사용자를 a로 표기한다.
기호 모드에서는 +,-,=으로 권한을 적용할 수 있다.
권한 표기 | 의미 |
u+w / u-w | 소유자(u)에게 쓰기(w) 권한 부여(+) / 제거(-) |
g+w / g+wx | 그룹(g)에게 쓰기(w) 권한 부여(+) / 쓰기(w), 실행(x) 권한 부여(+) |
o-r | 기타 사용자(o)의 읽기(r) 권한 제거(-) |
+wx / a+rwx | 모든 사용자에게 umask에 따라 권한 부여(+) / 모든 사용자(a)에게 읽기(r), 쓰기(w) 실행(x) 권한 부여(+) |
u=rwx | 소유자(u)에게 읽기, 쓰기, 실행 권한(rwx) 지정(=) |
go+w | 그룹(g)과 기타 사용자(o)에게 쓰기 권한(w) 부여(+) |
u+x,go+w | 소유자(u)에게 실행(x) 권한을 부여하고(+) 그룹(g)과 기타 사용자(o)에게 쓰기(w) 권한 부여(+) |
숫자를 이용한 접근 권한 변경
숫자 모드에서는 변경하고자 하는 접근 권한을 0~7의 숫자로 나타낸다.
카테고리별로 접근 권한이 있는 것은 1, 없는 것은 0으로 계산해서 2진수 값을 구한다.
해당 2진수 값을 10진수로 환산하여 chmod 명령에 적용한다.
ex) 접근 권한이 rw-r--r--이면 644로 환산되며, chmod 명령에 적용하면 'chmod 644 파일명'이 된다.
기본 접근 권한 설정
리눅스에서는 파일이나 디렉터리를 생성할 때 기본 접근 권한이 자동으로 생성된다.
(일반 파일 : 664, 디렉터리 : 775)
파일이나 디렉터리를 생성할 때 부여하지 않을 권한을 마스크라고 하며, umask 명령으로 설정 및 확인할 수 있다.
ex) umask - 현재 마스크 값 확인, umask 022 - 마스크 값을 022로 변경
최대 접근 권한과 마스크 값을 비교하여 마스크 값이 1인 권한을 제외하고 기본 접근 권한을 결정한다.
이는 최대 접근 권한에서 마스크 값을 빼준 것과 동일하다.
ex) 마스크 값이 002라면 일반 파일은 666에서 002를 뺀 664가 기본 접근 권한이 된다.
특수 접근 권한
SetUID : 해당 파일이 실행되는 동안에는 파일을 실행한 사용자 권한이 아닌 파일 소유자의 권한이 적용된다. 접근 권한의 맨 앞자리에 4를 설정하며, 소유자의 실행 권한에 s가 표시된다.
(SetUID는 일반 사용자가 root 권한으로 실행할 필요가 있는 일부 명령(passwd 등)에 설정하여 사용하는데, 이를 이용한 해킹도 등장하여 보안에 신경을 써야 한다)
SetGID : 해당 파일이 실행되는 동안에는 파일을 실행한 사용자 권한이 아닌 파일 소유 그룹의 권한이 적용된다. 접근 권한의 맨 앞자리에 2를 설정하며, 그룹의 실행 권한에 s가 표시된다.
sticky bit : 디렉터리에 스티키 비트를 설정하면 누구나 파일을 생성할 수 있지만, 파일의 삭제는 파일의 소유자만 가능하다. 접근 권한의 맨 앞자리에 1를 설정하며, 기타 사용자의 실행 권한에 t가 표시된다.
만약 실행 권한이 없는데 SetUID, SetGID, sticky biy가 설정되면 소문자가 아닌 대문자로 표시된다. 이는 접근 권한을 잘못 설정한 것이다.
'development > Linux' 카테고리의 다른 글
[우분투 리눅스] 파일 시스템과 디스크 관리 (0) | 2022.07.27 |
---|---|
[우분투 리눅스] 프로세스 관리하기 (0) | 2022.07.23 |
[우분투 리눅스] 셸 기초 사용법 (0) | 2022.07.19 |
[우분투 리눅스] vi 기초 사용법 (0) | 2022.07.12 |
[우분투 리눅스] 디렉터리와 파일 기초 명령어 (0) | 2022.07.12 |