본문 바로가기

13. OS

[Linux] 3. 파일의 접근 권한

https://www.yes24.com/Product/Goods/56681458

 

페도라 리눅스 - 예스24

시스템, 서버 및 네트워크, 보안까지 한 권으로 정복하는 페도라 리눅스리눅스에 대한 기본 지식을 쌓고자 하는 컴퓨터 관련 학과 학생을 대상으로 한다. 대부분의 윈도 사용자를 위해 리눅스를

www.yes24.com

 

 리눅스는 기본적으로 여러 명이 함께 사용하는 다중 사용자 시스템이므로 각 사용자의 파일과 정보를 보호하기 위해 접근 권한을 제어하는 것이 필수이다. 

 

◎ 파일의 속성

[Linux] 1. 디렉토리와 파일

 

1. 파일 종류

file 명령어로 지정한 파일의 종류를 알 수 있다.

파일의 종류는 앞에 '[Linux] 1. 디렉토리와 파일' 참고.

 

2. 파일의 접근 권한 표시

밑에서 따로 설명.

 

3. 하드 링크의 개수

하드 링크는 한 파일에 대해 여러 개의 파일명을 가질 수 있도록 하는 기능이다.

 

예시

① : origin.txt 에 대한 하드링크 파일인 hardlink.txt를 생성.  

-i 옵션을 줘서 확인해보면 같은 i-node 번호인 것을 확인할 수 있다.

② : 같은 파일이기 때문에 해당 문구가 출력된다.

③ : vi로 origin.txt 파일을 편집해도 같은 파일이기 때문에 내용이 공유된다.

④ : 맨 위에 origin.txt와 비교하였을 때 하드 링크의 개수가 늘어난 것을 확인할 수 있다.

⑤ : 지정한 파일의 종류를 알려주는 file 명령어.

 

4. 파일 소유자의 로그인 ID

리눅스에서는 모든 파일은 소유자가 있다. 시스템과 관련된 파일은 대부분 루트 계정이 소유자이고, 일반 파일은 해당 파일을 생성한 사용자가 소유자이다.

 

5. 파일 소유자의 그룹 이름

리눅스에서 사용자는 기본적으로 하나 이상의 그룹에 속해 있다. 이 그룹에 속한 사용자들에게 권한을 부여하여 파일을 공유할 수 있다. 사용자가 속한 기본 그룹은 시스템 관리자가 사용자를 등록할 때 결정한다. 사용자가 임의로 자신의 그룹을 바꿀 수 없으며 반드시 시스템 관리자에게 변경을 요청해야 한다. 그룹이 정의된 파일은 /etc/group 으로 시스템 관리자만 수정할 수 있다.

 

6. 파일의 크기

파일의 크기를 바이트 단위로 알려준다.

 

7. 파일이 마지막으로 수정된 날짜

파일이 마지막으로 수정된 날짜와 시간이 표시된다. 연도가 표시되지 않으면 올해를 의미한다.

 

 

◎ 파일의 접근 권한

접근 권한은 해당 파일을 읽고 쓰고 실행할 수 있는 권한으로 사용자의 파일을 보호하는 가장 기본적인 보안 기능이라고 할 수 있다. 리눅스는 사용자를 파일 소유자, 파일이 속한 그룹, 그 외 기타 사용자라는 세 카테고리로 구분하여 접근 권한을 적용한다. 카테고리별로 파일에 접근하는 권한은 소유자나 시스템 관리자가 조정할 수 있다.

 

리눅스에서 접근 권한은 읽기 권한, 쓰기 권한, 실행 권한 등 세 가지로 구성된다.

권한 파일 디렉토리
읽기 파일을 읽거나 복사할 수 있다. ls 명령으로 디렉토리 목록을 볼 수 있다.
(ls 명령의 옵션은 실행 권한이 있어야 사용할 수 있다)
쓰기 파일을 수정ㆍ이동ㆍ삭제할 수 있다.
(디렉토리에 쓰기 권한이 있어야 한다)
파일을 생성하거나 삭제할 수 있다.
실행 파일을 실행할 수 있다.
(셸 스크립트나 실행 파일의 경우)
cd 명령을 사용할 수 있다.
파일을 디렉토리로 이동하거나 복사할 수 있다.

 

접근 권한의 표기는 사용자 카테고리별로 누가 파일을 읽고 쓰고 실행할 수 있는지를 문자로 표현한 것이다.

읽기 권한은 r, 쓰기 권한은 w, 실행 권한은 x로 나타내며 해당 권한이 없는 경우에는 -로 표기한다.

사용자 카테고리별로 세 가지 권한의 부여 여부를 rwx 세 문자를 묶어서 표기한다.

 

접근 권한의 경우 chmod 명령어로 변경 가능하다.

chmod 명령으로 접근 권한을 변경할 때 기호 모드와 숫자 모드를 사용할 수 있다.

 

ㆍ기호 모드 : 접근 권한을 변경하기 위해 문자와 기호를 사용하여 권한을 표시한다.

ㆍ숫자 모드 : 접근 권한을 변경하기 위해 숫자를 사용한다.

 

기호 모드에서 사용하는 문자와 기호는 다음과 같다.

구분 문자/기호 의미
사용자 카테고리 문자 u 파일 소유자
g 소유자가 속한 그룹
o 소유자와 그룹 이외의 기타 사용자
a 전체 사용자
연산자 기호 + 권한 부여 (기존 권한에서 추가)
- 권한 제거
= 권한 부여 (기존 권한 초기화하고 추가)
접근 권한 문자 r 읽기 권한
w 쓰기 권한
x 실행 권한

 

권한 부여 +와 =의 차이점

 

숫자는 이진수로 읽기, 쓰기, 실행순으로 true, false를 나타내서 설정한다.

 

chmod 755 [파일 이름]

 

7 = 111 => 소유자 읽기, 쓰기, 실행

5 = 101 => 그룹사용자 읽기, 실행

5 = 101 => 기타사용자 읽기, 실행

 

 

◎ 기본 접근 권한 설정

리눅스에서는 파일이나 디렉토리를 생성할 때 기본 접근 권한이 자동적으로 설정된다.

보통 소유자와 그룹은 일반파일의 경우 읽기, 쓰기 권한 디렉토리의 경우 읽기, 쓰기, 실행 권한이 설정되고

기타 사용자는 일반파일의 경우 읽기 디렉토리의 경우 읽기, 실행 권한이 설정된다.

기본 접근 권한은 리눅스 시스템에 설정된 기본값에 따른 것으로, 이 기본값을 바꾸면 기본 접근 권한도 바꿀수 있다.

 

기본 접근 권한을 확인하고 설정하는 데는 umask 명령을 사용한다.

 

● umask [옵션] [마스크 값]

기본 접근 권한을 출력하거나 변경한다.

 

ㆍ옵션

-S : 마스크 값을 문자로 출력한다.

 

umask는 파일 및 디렉토리의 기본 퍼미션(권한)을 설정하는데 사용되는 시스템 설정이다. 일반적으로 3자리의 8진수 숫자로 표시된다. 디렉토리와 파일의 기본 권한은 777, 666 으로 umask의 값을 뺄셈하여 적용된다.

 

umask 0002일 때 파일과 디렉토리에 적용되는 권한

 

0002일 경우 디렉토리는 775, 일반 파일은 664로 적용이 되는 것을 볼 수 있다.

 

 

umask 명령만 사용하면 다음과 같이 현재 설정된 기본 마스크 값을 보여준다. (0002)

맨 앞의 0은 다른 용도가 있으며, 기본 접근 권한으로 002를 적용한다.

 

기타사용자는 읽기 권한 주도록 변경

 

마스크 값은 파일이나 디렉토리 생성 시 부여하지 않을 권한으로 지정해놓은 것을 말한다.

chmod의 숫자와 똑같으며 002는 기타사용자의 쓰기 권한을 부여하지 않는다는 의미이다.

① : 현재 설정된 마스크값은 0002 이다.

② : -S 옵션을 주면 마스크 값을 문자로 출력한다.

③ : umask에 마스크 값을 부여하면 기본 접근 권한이 바뀐다.

 

 

◎ 특수 접근 권한

앞서 하였던 네자리 숫자 중 맨 앞에 한 자리는 특수 접근 권한을 나타낸다.맨 앞자리의 숫자가 0이면 일반적인 접근 권한이지만 1, 2, 4이면 특수 접근 권한이 설정된다. 특수 접근 권한은 다음과 같다.

 

● SetUID : 맨 앞자리가 4

● SetGID : 맨 앞자리가 2

● 스티키 비트(sticky bit) : 맨 앞자리가 1

 

 

● SetUID

SetUID가 설정된 파일을 실행하면 해당 파일이 실행되는 동안에는 파일을 실행한 사용자의 권한이 아니라 파일 소유자의 권한이 적용된다. 적용할 시 소유자의 실행 권한에 's'로 표시된다.

① : root 계정으로 텍스트 파일 생성 후 chmod 4775 rootText.txt

② : kdk 계정으로 텍스트 파일 수정이 가능하다. (파일 실행할 때는 파일 소유자인 root 권한 적용)

 

SetUID는 일반 사용자가 root 권한으로 명령을 실행할 필요가 있는 일부 명령에 설정하여 사용하는데, 이럴 경우 보안에도 신경을 써야 한다.

 

 

 SetGID

위에 SetUID와 거의 동일하다. SetGID가 설정된 파일을 실행하면 해당 파일이 실행되는 동안에는 파일 소유 그룹의 권한이 적용된다.  SetGID는 접근 권한의 맨 앞자리에 2를 설정해야 한다. 그러면 그룹의 실행 권한에 's'가 표시 된다.

 

 

● 스티키 비트

스티키 비트는 위에 두 가지와는 다른 특징을 가지고 있다. 스티키 비트는 디렉토리에 설정하며, 렉토리에 스티키 비트가 설정되어 있으면 이 디렉토리에는 누구나 파일을 생성할 수 있다. 파일은 파일을 생성한 계정으로 소유자가 설정되고, 다른 사용자가 생성한 파일은 삭제할 수 없다. /tmp 디렉토리가 이러한데 스티키 비트가 설정되면 기타 사용자의 실행 권한이 't'로 표시된다.

 

root 계정으로 stikcyTest 디렉토리에 chmod 1777 stikcyTest 권한 부여 후

kdk 계정으로 파일을 생성하였다. 생성한 파일의 소유자가 kdk인 것을 확인할 수 있다.

스티키 비트 권한 부여 시 기타사용자에게도 쓰기 권한을 줘야 파일 생성이 가능.

(처음에 1775로 부여했다가 계속 거부 먹었다..)

'13. OS' 카테고리의 다른 글

[Linux] 5. 파일 시스템과 디스크 관리  (1) 2024.03.28
[Linux] 4. 프로세스 관리하기  (0) 2024.03.21
[Linux] 2. shell  (1) 2024.03.18
[Linux] 1. 디렉토리와 파일  (0) 2024.03.14
[Linux] 명령어  (0) 2023.12.14