04. 파일 접근 권한 관리
1. 접근 권한
파일에는 해당 파일을 읽고 쓰고 실행할 수 있는 권한을 나타내는 속성이 있으며, ls -l 명령으로 접근 권한을 확인할 수 있다. 접근 권한은 사용자를 세 카테고리(소유자, 그룹, 기타 사용자)로 나누고, 각 카테고리별로 읽기, 쓰기, 실행 권한을 정의한다.
2. 접근 권한의 표기
접근 권한의 표기는 사용자 카테고리별로 누가 파일을 읽고 쓰고 실행할 수 있는지를 문자로 표현한 것이다. 읽기 권한은 r, 쓰기 권한은 w, 실행 권한은 x로 표기하고, 해당 권한이 없는 경우에는 -으로 표기한다. 사용자 카테고리별로 세 가지 권한의 부여 여부를 rwx 세 문자로 묶어서 표기한다. (예: rwxr-xr-x)
3. 문자를 이용한 접근 권한 변경
chmod 명령으로 접근 권한을 변경할 때 접근 권한을 문자와 기호로 표기하는 모드를 문자 모드라고 한다. 문자 모드에서 소유자는 u, 그룹은 g, 기타 사용자는 o, 전체 사용자는 a로 표기한다. (예: chmod u+w,go-x test.txt)
4. 숫자를 이용한 접근 권한 변경
숫자 모드에서는 변경하고자 하는 접근 권한을 0부터 7의 숫자로 나타낸다. 카테고리의 접근 권한을 권한이 있는 것은 1, 없는 것은 0으로 바꿔 10진수로 환산해 하나씩 연결하면 10진수 세 자리 수가 된다. 예를 들어 접근 권한이 rw-r--r--이면 644로 환산된다. 이를 chmod 명령에 적용하면 chmod 644 filename과 같다.
5. 기본 접근 권한 설정
리눅스에서는 파일이나 디렉터리를 생성할 때 기본 접근 권한이 자동으로 설정된다.
- 일반파일: 소유자와 그룹은 읽기 및 쓰기 권한을 가지고, 기타 사용자는 읽기 권한만 가진다.
- 디렉터리: 소유자와 그룹은 읽기, 쓰기, 실행 권한을 가지며, 기타 사용자는 읽기 및 실행 권한을 가진다.
기본 접근 권한을 확인하고 설정하는 데는 umask 명령을 사용한다. 인자 없이 umask 명령만 사용하면 현재 설정된 기본 마스크 값을 보여준다. 간단하게 계산하려면 최대 접근 권한에서 마스크 값을 빼면 된다. 예를 들어 마스크 값이 002일 때 최대 접근 권한인 666에서 002를 빼면 664가 되는데 이것이 기본 접근 권한이다.
6. 특수 접근 권한
SetUID- 해당 파일이 실행되는 동안에는 파일을 실행한 사용자의 권한이 아니라 파일 소유자의 권한으로 실행할 수 있도록 한다.
1
2
3
chmod 4755 kkk.exe
ls -l kkk.exe
-rwsr-xr-x ...
SetGID- 해당 파일이 실행되는 동안에는 파일을 실행한 사용자의 권한이 아니라 파일 소유 그룹의 권한으로 실행할 수 있도록 한다.
1
2
3
chmod 2755 kkk.exe
ls -l kkk.exe
-rwxr-sr-x ...
스티키 비트- 디렉터리에 스티키 비트가 설정되어 있으면 이 디렉터리에는 누구나 파일을 생성할 수 있으며, 파일을 생성한 계정으로 소유자가 설정되고 다른 사용자가 생성한 파일은 삭제할 수 없다.
1
2
3
chmod 1755 temp
ls -ld temp
drwxr-xr-t ...