권한은 파일이나 디렉토리를 사용할 수 있는지를 정하는 개념이다.
Linux에서 권한은 경로만큼이나 중요한 개념이다.
경로가 파일이나 디렉토리를 찾아가는 길이라면,
권한은 실제로 파일이나 디렉토리를 어떻게 사용할 수 있을지를 결정한다.
권한은 허가권과 소유권으로 구분된다.
'허가권', '소유권', 그리고 '허가권과 소유권의 적용'의 순서로 살펴볼 예정이다.
허가권의 의미
ls -l 명령어로 파일이나 디렉토리의 허가권을 확인할 수 있다.
출력되는 내용 중 개체 형식을 나타내는 맨 첫 글자 뒤의 9개 글자가 허가권을 나타낸다.
itbank의 개체 형식 디렉토리를 의미하는 d 뒤에 r, w, x, - 로 이루어진 9개 글자가 허가권이다.

Linux에서는 다음의 8가지 문자로 허가권을 표현한다.
- r, w, x, - : 일반 권한 표현 문자
- s, S, t, T : 특수 권한 표현 문자
특수 권한은 추후 포스팅에서 다루도록 하고, 일반 권한 표현 문자를 먼저 살펴본다.
각 권한 문자의 의미를 파일과 디렉토리의 경우로 나누어 살펴보면 다음과 같다.
(1) r : 읽기
- 파일 - 파일 내용 읽기; cat, head, tail, more, less, vi 명령어로 파일을 열었을 때 등
- 디렉토리 - 디렉토리 내부 목록 확인; ls 명령어 사용, GUI 환경에서 폴더에 접근했을 때 등
(2) w : 쓰기
- 파일 - 파일 내용 수정; 문서 편집 후 저장, 리디렉션 기호(>)를 이용하여 덮어쓰기/내용추가 등
- 디렉토리 - 디렉토리 내부 목록 수정; 디렉토리 내부 하위 파일/디렉토리의 생성/삭제 등
(3) x : 실행/접근
- 파일 - 실행; 파일에 x가 없으면 문서 파일, 파일에 x가 있으면 실행 파일(ex: 명령어)
- 디렉토리 - 접근; 디렉토리에 x가 없으면 디렉토리 자체 및 내부 항목들을 사용할 수 없음
* 디렉토리 접근 권한 매우 중요
(4) - : 권한 없음
권한 영역
9자리의 권한 문자는 3개씩 끊어서 각각 Owner, Group, Other 영역으로 구분한다.
각 영역에는 r, w, x가 순서대로 들어가고, 특정 권한이 없다면 권한 없음 기호(-)가 대신 들어간다.
ex)
Owner Group Other
(r w x) (r - x) (r - x)
- Owner : 소유자(파일, 디렉토리를 소유 중인 사용자)를 위한 권한
- Group : 그룹 사용자(파일, 디렉토리를 소유 중인 그룹에 소속된 사용자)를 위한 권한
- Other : 그 외 사용자(Owner, Group 둘 다 해당되지 않는 사용자)를 위한 권한
* 사용자는 위 3개의 영역 중 하나의 영역의 권한만을 적용받는다.
3개의 영역 중 어느 영역의 권한을 적용받을지는 소유권에서 결정한다.
권한 표현 방법
허가권의 권한 표현 방법에는 두 가지가 있다.
각각 문자와 숫자를 이용한 방법이다.
1) 문자를 이용한 방법
r, w, x, - 문자를 있는 그대로 차례대로 읽어주는 방법이다.
주의할 점은 권한 없음 기호(-)도 읽어주어야 권한에 착오가 없다는 것이다.
2) 숫자를 이용한 방법
문자를 숫자 값으로 변환하여 사용한다.
계산 방법은 다음과 같다.
(1) Owner, Group, Other 영역 분리
(2) r = 4, w = 2, x = 1, - = 0 을 각 영역의 문자에 대입 후 영역별로 합을 계산
(3) 각 영역에서 구한 합에 Owner는 100, Group은 10, Other는 1을 곱해서 전체 합을 계산
ex)
1. rwxr-xr-x
Owner Group Other
r w x r - x r - x
4 2 1 4 0 1 4 0 1
7 5 5
x100 x10 x1
700 + 50 + 5 = 755
2. rw-r--r--
Owner Group Other
r w - r - - r - -
4 2 0 4 0 0 4 0 0
6 4 4
x100 x10 x1
600 + 40 + 4 = 644
3. 375
* 숫자에서 문자로의 변환
Owner 3, Group 7, Other 5 → --xrwxr-x
허가권 변경
chmod 명령어을 사용하여 허가권의 권한값을 변경해줄 수 있다.
chmod [옵션] 권한값 대상 [대상] ... [대상]
권한값을 숫자 또는 문자로 입력할 수 있다.
입력 방식에 따라 아래 두 가지 방식으로 분류된다.
- numeric method : 변경할 권한 전체를 숫자로 입력
- symbolic method : 영역 문자에 필요한 권한을 +, - 기호로 더하거나 뺌
* symbolic method 영역 문자
- u : owner
- g : group
- o : other
/home/itbank 디렉토리에 test 파일을 생성하여 권한을 변경하는 간단한 실습을 해보자.
chmod 명령어 사용 시 test 앞에는 ./가 생략되었다.
현재 위치의 test 파일의 권한을 변경하겠다는 의미이다.


권한 변경 실습 예제

(풀이)
먼저 /etc/inittab 파일을 현재 위치로 복사해준다.

(1) numeric method
rw--w--wx는 숫자로 변환하면 623이다.
chmod 623 inittab으로 파일의 허가권을 변경해준다.

(2) symbolic method
256은 문자로 변환하면 -w-r-xrw-이다.
rw--w--wx에서 -w-r-xrw-로 허가권을 변경하기 위해,
어떤 문자가 더해지고 빠져야하는지 생각해보면 된다.
영역 별로 +, - 연산자 뒤에 같은 연산을 하는 문자를 묶어줄 수 있다.
' , ' 로 분리해 명령어를 한 줄에 나타낼 수도 있다.

물론, 한 줄 씩 따로 적어줄 수도 있다.

정석은 아니지만 +, - 연산자가 아닌 등호도 symbolic method에 활용이 가능하다.
-w-r-xrw-의 영역을 분리해 -를 제외하고 각 영역에 포함된 문자를 등호 뒤에 나열하면 된다

'2022 데이터 사이언스 > Linux' 카테고리의 다른 글
16. 권한(3): 소유권과 권한 적용 (0) | 2022.05.30 |
---|---|
15. 권한(2): 웹 서버와 http (0) | 2022.05.30 |
13. 사용자와 그룹(4): 그룹 (0) | 2022.05.28 |
12. 사용자와 그룹(3): 사용자 정보 수정 및 삭제 (0) | 2022.05.28 |
11. 사용자와 그룹(2): 사용자 계정 생성 (0) | 2022.05.28 |