리눅스프로그래밍

우분투 리눅스 - 파일 접근 권한 관리

헬로월드! 2020. 5. 16. 00:19

리눅스에서 ls 명령을 사용해보면 , 파일의 상세 정보를 알 수 있다. 상세 정보에는 파일에 대한 접근 권한도 포함되어 있다.

(접근권한: 해당 파일을 누군가 보거나 수정, 삭제 할 수 있는지 정의한 것으로 사용 권한 이라고도 한다.)

 

리눅스는 기본적으로 다중 사용자 시스템이기 때문에 여러 명의 사용자가 같은 시스템에서 작업하게 된다!

따라서 누군가 파일에 무단으로 접근하는 것을 방지하기 위해 보호하는 기능을 제공한다.

 

1. 파일의 속성

user @myubuntu:~$ ls -l /etc/hosts

-rw-r--r-- 1 root root 223 08월 29 11:11 /etc/hosts

 

번호속성 값의미
1-파일의 종류 (- : 일반 파일, d: 디렉터리)
2rw-r--r--파일을 읽고 쓰고 실행할 수 있는 접근 권한 표시 (여기서, r : 읽기, w: 쓰기, x: 실행을 나타낸다.)
31하드 링크의 개수
4root파일 소유자의 로그인 ID
5root파일 소유자의 그룹이름
6223 파일의 크기(바이트 단위)
78월 29 11:11파일이 마지막으로 수정된 시간과 날짜
8/etc/hosts파일명

 

1) file 파일 

지정한 파일의 종류를 알려준다.

ex) file /etc/hosts temp

/etc/hosts: ASCII tet

temp: directory

 

file 명령의 사용 결과를 보면 /etc/hosts는 일반 텍스트 파일이고 temp 는 디렉터리임을 알 수 있다.

 

2) 파일의 접근 권한 표시 

파일의 소유자, 그룹, 기타사용자들이 파일에 대해 가지고 있는 접근 권한을 표시한다.

이 권한은 chmod 명령을 이용하여 변경 가능하다.

 

3) 하드링크의 개수

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

 

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

리눅스에서 모든 파일은 소유자가 있다! 

시스템과 관련된 파일은 대부분 루트 계정이 소유자이고, 일반 파일은 그 파일을 생성한 사용자가 소유자이다.

 

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

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

 

groups

사용자가 속한 그룹을 알려주는 명령

groups [사용자명] 을 입력하면 사용자가 속한 그룹을 알려주고 group 만 입력하면 자신이 속한 그룹을 알려준다.

 

6) 파일의 크기 : 바이트 단위

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

 

2. 파일의 접근 권한 

파일의 속성에는 파일의 접근 권한이 있다. 리눅스에서는 사용자를 세 부분으로 구분하여 접근권한을 적용한다.

파일 소유자, 파일이 속한 그룹, 그 외 기타 사용자

로 나눈다!

사용자별로 접근 권한을 다르게 해서 파일을 보호할 수 있다! 

 

리눅스에서 접근 권한은 r w x 로 읽기 , 쓰기, 실행 권한 등 세 가지로 구성된다. 해당 권한이 없는 경우 - 로 표기 

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

 

user @myubuntu:~$ ls -l /etc/hosts

-rw-r--r-- 1 root root 223 08월 29 11:11 /etc/hosts

접근 권한을 나타냄

-rw-r--r--

첫번째 - 는 파일의 종류로 접근 권한과 관계가 없다. 

세묶음 씩 rw-  소유자의 권한 

r--  그룹의 권한

r--  기타 사용자의 권한 

 

3. 접근 권한 변경 명령

 

명령 : chmod

기능 : 파일이나 디렉터리의 접근 권한을 변경한다.

옵션 : -R 하위 디렉터리까지 모두 변경할 수 있다.

 

chmod 명령으로 접근 권한을을 변경할 때는 두가지 모드가 있다.

1) 기호모드 2) 숫자모드

 

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

chmod     사용자 카테고리 문자       연산자 기호       접근 권한 문자     파일명

사용자 카테고리 문자u파일 소유자
 g소유자가 속한 그룹
 o소유자와 그룹 이외의 기타 사용자
 a전체 사용자 

 

연산자 기호+권한 부여
 -권한 제거
 =접근 권한 설정
접근 권한 문자r읽기권한
 w쓰기권한
 x실행권한

예를 들어, 권한 표기가 

u+w 라면 u(소유자)에게 +(권한부여) w(쓰기)

o-r 라면 o(기타사용자)에게 -(권한제거) r(읽기)

go+w 라면 go(그룹과 기타사용자에게) +(권한 부여) w(쓰기)

a+rwx 라면 a (모든 사용자에게) rwx (읽기,쓰기,실행) + (부여)

u=rwx 라면 소유자에게 읽기, 쓰기, 실행권한 부여

+wx 라면 모든 사용자에게 umask 에 따라 권한 부여(+)

 

2) 숫자모드란? 접근 권한을 변경하기 위해 숫자를 사용한다.

숫자모드로 환산하기

읽기, 쓰기, 실행 => 소유자 권한 (0~7)

읽기, 쓰기, 실행 = > 그룹 권한 (0~7)

읽기, 쓰기, 실행 => 기타 사용자 권한 (0~7)

 

rwx 권한한 묶음을 숫자로 환산하는 법은? 각 권한이 있으면 1, 없으면 0으로 바꾼 후 이를 2진수 세 자리 수로 간주하여 환산하면 0~7로 표기할수 있다. 

 

0 1 1 이면 => -wx (숫자로는 , 3)

1 1 1 이면 => rwx (숫자로는 , 7)

0 0 0 이면 => ---  (숫자로는 , 0)

 

각 숫자의 위치가 사용자 카테고리를 나타내기 때문에 사용자 카테고리를 따로 지정할 필요가 없다.

항상 세 자리 수를 사용해야 하므로 변경하려는 사용자 카테고리의 권한 뿐만 아니라 그룹과 기타 사용자의 권한도 반드시 같이 명시해야한다.