6 분 소요

1. 파일의 속성

파일 접근 권한 보호

  • 리눅스는 파일에 무단으로 접근하는 것을 방지하고 보호하는 기능을 제공
  • 사용자는 자신의 파일과 디렉터리 중에서 다른 사용자가 접근해도 되는 것과 그렇지 않은 것을 구분하여 접근 권한을 제한

파일의 속성

$ ls -l /etc/hosts
-rw-r--r-- root root 223 10월 24 23:58 /etc/hosts

1) 파일의 종류

  • 파일 속성의 첫 번째 항목은 파일의 종류를 표시
  • -는 일반 파일을, d는 디렉터리를, I은 심벌릭 링크 파일을 의미
  • 파일의 종류를 알려주는 명령 (file 파일이름)
    $ file /etc/hosts
    $ file /home/user1
    

    -rw-r--r-- 1 root root 223 11월 8 23:13 /etc/hosts

2) 파일의 접근 권한 표시

  • 파일 소유자와 그룹이나 기타 사용자들이 파일에 대해 가지는 접근 권한 표시
  • >> -rw-r--r-- << 1 root root 223 11월 8 23:13 /etc/hosts

3) 하드 링크의 개수

  • 하드 링크는 한 파일에 대해 여러 개의 파일명을 가질 수 있도록 하는 기능
  • 디렉터리의 경우는 해당 디렉터리 내의 디렉터리 개수를 의미
  • -rw-r--r-- >> 1 << root root 223 11월 8 23:13 /etc/hosts

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

  • 리눅스에서 모든 파일은 소유자가 있음
  • -rw-r--r-- 1 >> root << root 223 11월 8 23:13 /etc/hosts

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

  • ls -l 명령에서 출력되는 그룹명은 파일이 속한 그룹을 의미
  • 사용자가 속한 기본 그룹은 시스템 관리자가 사용자를 등록할 때 결정
  • 사용자가 속한 그룹을 알려주는 명령: groups [사용자명]
  • $ groups user1
  • -rw-r--r-- 1 root >> root << 223 11월 8 23:13 /etc/hosts

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

-rw-r--r-- 1 root root >> 223 << 11월 8 23:13 /etc/hosts

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

-rw-r--r-- 1 root root 223 >> 11월 8 23:13 << /etc/hosts

8) 파일명

-rw-r--r-- 1 root root 223 11월 8 23:13 >> /etc/hosts <<


2. 파일의 접근 권한

접근 권한의 종류

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

접근 권한의 표기 방법

rw- : 소유자, r-- : 그룹, r-- : 기타 사용자

다양한 접근 권한 조합의 예

접근 권한 의미
rwxr-xr-x 소유자는 읽기,쓰기,실행 권한을 모두 가지고 그룹과 기타 사용자는 읽기,실행 권한을 가지고 있다
r-xr-xr-x 소유자, 그룹, 기타 사용자 모두 읽기, 실행 권한을 가지고 있다
rw------- 소유자만 읽기, 쓰기 권한을 가지고 그룹과 기타 사용자는 아무 권한이 없다
rw-rw-rw- 소유자, 그룹, 기타 사용자 모두 읽기, 쓰기 권한을 가지고 있다
rwxrwxrwx 소유자, 그룹, 기타 사용자 모두 읽기, 쓰기 실행 권한을 가지고 있다
rwx------ 소유자만 읽기, 쓰기, 실행 권한을 가지고 그룹과 기타 사용자는 아무 권한이 없다
r-------- 소유자만 읽기 권한을 가지고 있다

-소유자, 파일이 속한 그룹, 일반 사용자 별로 누가 파일을 읽고 쓰고 실행할 수 있는지 문자로 표현

  • 읽기 권한 r, 쓰기 권한 w, 실행 권한 x이며, 권한이 없는 경우는 -로 표기
  • -rw-r--r-- 1 root root 223 11월 8 23:13 /etc/hosts

접근 권한의 변경 명령 (chmod [옵션] 접근권한모드 파일 또는 디렉터리)

  • $ chmod a+rwx test.txt
  • $ chmod 777 test.txt
chmod  
기능 파일이나 디렉터리의 접근 권한을 변경한다
형식 chmod [옵션] 권한 모드 파일 또는 디렉터리
옵션 -R : 하위 디렉터리까지 모두 변경할 수 있다
  • 기호 모드: 접근 권한을 변경하기 위해 문자와 기호를 사용
  • 숫자 모드: 접근 권한을 변경하기 위해 숫자를 사용

3. 기호를 이용한 파일 접근 권한 변경

기호 모드

chmod a+rwx test.txt

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

기호 모드에서 사용하는 문자와 기호

구분 문자/기호 의미
사용자 카테고리 문자 user 파일 소유자
사용자 카테고리 문자 group 소유자가 속한 그룹
사용자 카테고리 문자 other 소유자가 그룹 이외의 기타 사용자
사용자 카테고리 문자 all 전체 사용자
연산자 기호 + 권한 부여
연산자 기호 - 권한 제거
연산자 기호 = 접근 권한 설정
접근 권한 문자 read 읽기 권한
접근 권한 문자 write 쓰기 권한
접근 권한 문자 execute 실행 권한

기호 모드를 이용한 접근 권한 설정의 예

권한 표기 의미
u+w 소유자(u)에게 쓰기(w) 권한 부여(+)
u-x 소유자(u)의 실행(x) 권한 제거(-)
g+w 그룹(g)에 쓰기(w) 권한 부여(+)
o-r 기타 사용자(o)의 읽기(r) 권한 제거(-)
g+wx 그룹(g)에 쓰기(w)와 실행(x) 권한 부여(+)
+wx 모든 사용자에게 umask에 따라 권한 부여(-)
a+rwx 모든 사용자에게 읽기(r), 쓰기(w), 실행(x) 권한 부여(=)
go+w 그룹(g)과 기차 사용자(o)에게 쓰기(w) 권한 부여(+)
u+x.go+w 소유자(u)에게 실행(x) 권한을 부여하고(+) 그룹(g)과 기타 사용자(o)에게 쓰기(w) 권한 부여(+)

기호를 이용한 접근 권한 변경 예

1) 현재 접근 권한 확인 (rw-rw-r--) $ ls -l test.txt

2) 소유자의 쓰기 권한 제거 (u-w) $ chmod u-w test.txt


4. 숫자를 이용한 파일 접근 권한 변경

  • 전체 권한을 숫자 표기
    rwx         r-         xr--
    소유자 권한    그룹 권한    기타 사용자 권한
    7           5          4
    
  • 권한을 숫자로 확산 1) r-x에서 권한이 있는 것은 1로 없는 것은 0으로 변환 2) 2진수를 각 자리별로 10진수로 환산하면 4, 0, 1이 됨 3) 세 숫자를 더하면 최종 권한 값 (5)이 됨

  • 숫자 모드로 접근 권한 변경하기 예 1) 현재 접근 권한 확인: (rw-rw-r--) 664 $ ls -l test2.txt 2) 소유자의 쓰기 권한 제거: (r--r--r--) 444 $ chmod 444 test2.txt ; ls -l test2.txt 3) 그룹에 쓰기와 실행 권한 부여: (r--rwxr--) 474 $ chmod 474 test2.txt ; ls -l test2.txt

  • 기본 접근 권한
    • 파일이나 디렉터리를 생성할 때 기본 접근 권한이 자동적 설정됨
    • 일반파일의 경우 rw-rw-r-- (664)로 기본 접근 권한이 설정됨
    • 디렉터리의 경우 rwxrwxr-x (775)로 기본 접근 권한이 설정됨

마스크 값은 파일이나 디렉터리 생성 시 부여하지 않을 권한을 지정해 놓은 것을 의미함

  • 마스크(mask) 값을 이용하여 기본 접근 권한을 설정할 수 있음
  • 마스크 값이 002일 경우 이는 --- --- -w- 로 기타 사용자에게 쓰기 권한을 부여하지 않는의미
  • 현재 기본 마스크 값 출력 명령 (부여하지 않는 권한을 숫자로 출력) $ umask
  • 현재 기본 마스크 값 출력 명령 (부여하는 권한을 문자로 출력) $ umask -S (결과) u=rwx, g=rx, o=rx

마스크 값의 적용을 통한 기본 접근 권한 설정

  • 실행파일이 아닌 일반파일의 최대 접근 권한은 666 이며, 디렉터리의 최대 접근 권한은 777 임

마스크 값 변경하기

  • 마스크 값을 바꾸면 파일이나 디렉터리를 생성할 때 적용되는 기본 접근 권한이 변경
  • $ umask 077
    • 일반파일의 경우 사용자, 그룹, 기타 사용자에게 600의 기본 접근 권한 부여
    • 디렉터리의 경우 사용자, 그룹, 기타 사용자에게 700의 기본 접근 권한 부여

특수 접근 권한

  • 접근 권한은 원래 4자리이나 맨 앞자리는 특수 접근 권한으로 일반적으로 생략
  • 맨 앞자리 숫자가 1, 2, 4이면 특수 접근 권한이 설정된 것을 의미함
    • 맨 앞자리가 4일 때, SetUID가 설정됨
    • 맨 앞자리가 2일 때, SetUID가 설정됨
    • 맨 앞자리가 1일 때, 스티키비트가 설정됨

SetUID (맨 앞자리 권한 4)

  • 해당 파일이 실행되는 동안 파일이 실행한 사용자의 권한이 아니라 파일 소유자의 권한으로 실행
  • 파일에 SetUID 설정 : SetUID는 접근 권한에서 맨 앞자리에 4를 설정
$ touch set       # 임의의 공백의 set 파일 생성
$ chmod 755 set   # 모두에게 실행권한 부여
$ ls -l set       # set 권한 확인
$ chmod 4755 set  # SetUID 권한 부여
$ ls -l set       # set 권한 다시 확인

-rwsr-xr-x 1 user1 user1 - 10월 29일 18:50 set
  • SetUID가 설정되면 소유자의 실행 권한에 s가 표시
  • set 파일을 실행하면, 항상 이 파일의 소유자인 user1 권한을 가지고 실행된다는 의미

SetUID가 사용된 사례

  • passwd 명령은 원래, root 사용자만 수행이 가능.
  • 그러나, passwd 명령은 SetUID가 설정되어 있기 때문에 user1 사용자가 자신의 비밀 번호를 수정할 때, passwd 명령이 소유자인 root 권한으로 실행되어 암호 변경이 가능해짐
  • passwd명령의 내용 확인
ls -l /usr/bin/passwd

-rwsr-xr-x 1 root root - 1월 26일 2018 /usr/bin/passwd
  • SetUID를 이용한 해킹도 등장

SetGID (맨 앞자리 권한 2)

  • SetGID 가 설정된 파일을 실행하면 해당 파일이 실행되는 동안 파일 소유그룹의 권한으로 실행
  • SetGID는 2755와 같이 접근 권한에서 맨 앞자리에 2를 설정
  • SetGID가 설정되면 소유 그룹의 실행 권한에 s가 표시

스티키 비트 (맨 앞자리 권한 1)

  • 스티키 비트는 디렉터리에 설정되며 이 디렉터리에 누구나 파일을 생성할 수 있음
  • 스티키 비트가 설정되면 기타 사용자의 실행 권한에 t가 표시
  • /tmp 디렉터리가 대표적으로 스티키 비트가 설정된 디렉터리
  • $ ls -ld /tmp (tmp 디렉터리 확인)
    $ ls -ld /tmp
    drwxrwxrwt 21 root root 4096 11월 17 13:36 /tmp
    

요약

  • 파일의 속성
    • -rw-r--r-- 1 root root 223 11월 8 23:13 /etc/hosts
  • 파일의 접근 권한
    • 읽기, 쓰기 실행하기 : rwx
  • 파일의 접근 권한 변경
    • chmod a+rwx test.txt, chmod 777 test.txt
  • 기본 접근 권한
    • 일반파일과 디렉터리의 최대 권한, mask
  • 특수 접근 권한
    • SetUID, SetGID, 스티키비트

태그: ,

카테고리:

업데이트:

댓글남기기