파일과 디렉터리의 접근 권한

리눅스에서의 접근 권한

-사용자 및 그룹에 따라 접근할 수 있는 파일 및 디렉터리를 제한
-이로써 보안성 강화, 시스템에 대한 접근 제한으로 운영 안정성
-총 9개의 비트로 이루어져있으며, 소유자, 소유자그룹, 이외 사용자에 대한 권한 관리를 한다.

접근 권한 설명 8진수 표현법
rwx 읽기, 쓰기, 실행 권한 7 (4 + 2 + 1)
rw- 읽기와 쓰기 권한 6 (4 + 2 + 0)
r-x 읽기와 실행 권한 5 (4 + 0 + 1)
r– 읽기 권한 4 (4 + 0 + 0)
-wx 쓰기와 실행 권한 3 (0 + 2 + 1)
-w- 쓰기 권한 2 (0 + 2 + 0)
–x 실행 권한 1 (0 + 0 + 1)
권한 없음 0 (0 + 0 + 0)

파일과 디렉터리의 접근 권한

읽기, 쓰기, 실행 권한은 아래와 같다.

접근권한 파일 디렉터리
읽기(r; read) - 파일의 내용을 볼 수 있다. - 디렉터리 내 파일과 서브디렉터리 목록 볼 수 있음.
쓰기(w; write) - 파일의 내용 수정
- 파일의 이름 수정
- 파일 삭제 가능
- 디렉터리 내 파일이나 서브디렉터리 생성 가능
- 디렉터리 내 파일 및 서브디렉터리 삭제 가능
실행(x; execute) - 파일 실행 가능 - 디렉터리 또는 서브디렉터리로 cd명령으로 이동 가능
- 디렉터리에서 프로그램 실행 가능
- 파일의 메타 데이터에 접근 가능

권한 설정

1. chmod

명령어 설명

파일의 소유자가 파일의 접근 권한을 변경하는 명령어. chande mode 의 약자이다.

기본 사용법

1
2
chmod [options] mode files  # (1) 
chmod -r [options] mode dir # (2)

(1) 파일들의 접근권한을 변경
(2) 디렉터리에 포함된 모든 파일과 서브 디렉터리까지 권한 변경

옵션

옵션 full name 설명
[대상]+[권한]   - [대상]에게 [권한]을 추가
[대상]-[권한]   - [대상]에게 [권한]을 제거
[대상]=[권한]   - [대상]의 권한을 [권한]으로 지정
a+[권한]   - 전체에게 [권한]을 추가
a-[권한]   - 전체에게 [권한]을 제거
a=[권한]   - 전체의 권한을 [권한]으로 지정

예시

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
ls -al
>> -rw-r--r--. 1 user user    0 Nov 24 20:10 test.txt

chmod 777 ./test.txt
ls -al
>> -rwxrwxrwx. 1 user user    0 Nov 24 20:10 test.txt

chmod 755 ./test.txt
ls -al
>> -rwxr-xr-x. 1 user user    0 Nov 24 20:10 test.txt

chmod 444 ./*
ls -al
>> -r--r--r--. 1 user user    0 Nov 24 20:10 test.txt

chmod ug+w ./test.txt
ls -al
>> -rw-rw-r--. 1 user user    0 Nov 24 20:10 test.txt

chmod a-wx ./*
ls -al
>> -r--r--r--. 1 user user    0 Nov 24 20:10 test.txt

2. umask

명령어 설명

파일이나 디렉터리 기본 접근권한을 출력하거나 설정하는 명령어
보통 umask에 대한 내용은 /etc/bashrc 에 저장됨

기본 사용법

1
2
umask [options] [mask]    # (1)
umask                     # (2)

(1) 파일이나 디렉터리 기본 접근권한을 설정
-umask의 mask는 “가리다”의 의미를 가지고 있다.
-chmod가 권한을 “추가” 하는 것이었다면, umask는 권한을 “가리는” 의미이다.
-예시로, chmod 002면 other 사용자에게만 write 권한이지만,
-umask 002면 user, group 은 전체권한, other 에게만 읽기쓰기 권한을 주는 것이다.
-또한 디렉터리의 기본 권한은 777로 시작하지만, 파일의 기본 권한은 666에서부터 시작한다.
-기본 umask 값은 002

(2) 현재 접근권한 기본값 출력
-S 옵션을 사용할 경우 기호 모드로 출력됨

umask 주의사항
-umask 는 권한 획득이 아니라 권한 상실의 의미로 사용된다.
-따라서 umask 뒤에 부여되는 [mask]는 “상실하는 권한” 이 된다.
-디렉터리는 기본 777 권한에서부터, 파일은 기본 666 권한에서부터 시작한다.

옵션

옵션 full name 설명
-S   권한을 8진수가 아닌 기호 모드로 보여줌

예시

1
2
3
4
5
6
7
8
9
10
11
umask
>> 0022

umask -S
>> u=rwx,g=rx,o=rx

umask 002
umask
>> 0002
umask -S
>> u=rwx,g=rwx,o=rx

3. chown

명령어 설명

-root 사용자가 파일이나 디렉터리의 소유자 또는 소유 그룹을 변경하는 명령.
-기본적으로 파일이나 디렉터리를 생성할 때에는 생성한 사용자와 사용자가 속한 그룹이 해당 파일 혹은 디렉터리의 소유자, 소유그룹이 된다.

기본 사용법

1
chown [options] newowner[:group] files  # (1)

-소유자 명시하고 그룹 생략시 : 소유자를 변경하고, 그룹을 소유자와 같은 그룹으로 변경
-소유자 생략하고 그룹만 명시 : 그룹만 변경
-소유자와 그룹 모두 명시 : 소유자와 그룹 모두 변경

옵션

옵션 full name 설명
-R   디렉터리에 chown 명령어를 사용할 경우 디렉터리의 하우 파일 및 디렉터리들에 재귀적으로 적용

Reference

UNIX시스템 - 김희천,김진욱 저