상세 컨텐츠

본문 제목

[Linux] 파일 및 디렉토리 속성정보(MetaData) 분석 | 권한 변경(chmod, chown, umask) | MAC time

IT/Linux

by o_zeew 2022. 2. 22. 10:05

본문

1. 파일 및 디렉토리 속성정보(MetaData) 분석
 

  • ls -l 명령어를 사용하면 파일 및 디렉토리의 속성정보 확인이 가능합니다

<원본> 


<분석>
- : 파일 [-], 디렉토리 [d], Symbolic link [l]  
rw- : user(owner)권한, r 읽기 4, w 쓰기 2, x 실행 1 
r-- : group 권한, r 읽기 4, w 쓰기 2, x 실행 1
r--  : 기타사용자(other), r 읽기 4, w 쓰기 2, x 실행 1
1  : link 갯수
root  : 소유주(owner)
root    : 그룹(group)
2   : 용량(size)
2월 17 09:49  : 파일이나 디렉토리가 마지막으로 수정된 시간
a.txt : 파일이나 디렉토리의 이름

  ** 모든 파일은 x 실행 권한이 있어야 접근 가능, rw가 있더라도 x가 없다면 접근 불가능

 




2. 권한변경 및 Test
   

[chmod] : 권한 변경 명령어

 

  • 사용자 지정 옵션
    - ugoa : u user, g group, o other, a all
    - + : 권한 추가
    - - : 권한 제거
    - rwx : r 읽기, w 쓰기, x 실행
    - -R : 하위 디렉토리에도 속성 전파, 단 명령어 이후 새로 생성하는 파일에는 적용 X

 

<옵션 사용해서 명령어 써보기>

  • 현재 a.txt 파일은 user의 권한이 읽기(r)와 쓰기(w)가 있습니다.

  • u 옵션을 사용하여 user을 지정하고, +x 옵션을 사용하여 실행권한(x)을 부여합니다

  • user에 실행권한(x)이 추가된 a.txt 확인이 가능합니다


  • user, group, other 는 명령어를 같이 사용해 한꺼번에 권한을 줄 수도 있습니다

group(g)과 other(o)에 실행권한(x)을 부여


  • - 옵션을 사용해 권한을 제거도 해봅니다

u-x 옵션을 사용해 user의 실행권한(x)를 제거, o+w 옵션을 사용해 others의 쓰기권한(w)을 부여


  • -R 옵션을 사용하여 하위 디렉토리에도 속성을 전파해봅니다

-R 옵션으로 최대권한을 준 뒤 1/2 디렉토리에도 같은 속성 적용된 것을 확인

  • -R 옵션을 사용한 이후에 생성한 파일에는 적용되지 않습니다


  • 8진수 법
    - r : 4, w : 2, x : 1
    - u : 4 + 2 + 1 
    - g : 4 + 2 + 1
    - o : 4 + 2 + 1
    - 777 : 전체권한, 첫번째 숫자 user, 두번째 숫자 group, 세번째 숫자 other 권한

u:7(rwx), g:5(rx), o:5(rx)

 


[umask ]
- 파일 및 디렉토리 생성 시 모든 권한을 부여하면 보안상 문제가 발생함으로 최소 권한 법칙에 근거하여

  파일 및 디렉토리의 최대 권한에서 umask 만큼을 빼서 파일 및 디렉토리 생성
- 디렉토리의 최대 권한은 777, 파일의 최대 권한은 666
- 디렉토리의 경우 해당 디렉토리에 접근하기 위해서는 반드시 x 권한이 있어야 함
- 파일의 경우 sh 명령어도 강제실행이 가능함으로 또한 rw 권한만으로 충분하기에 666

- umask의 네자리 수에서 맨 앞자리를 뺀 숫자로 봄 (umask 0044 -> 044)

umask를 0044로 설정하고 디렉토리를 만들면 777-044=733으로 만들어진다&amp;nbsp;
umask 0044일 때 파일을 만들면 666-044=622로 만들어진다

 

 

[chown] : 소유권 변경
- chown 사용자ip.그룹.id 파일명
- chown 사용자id 파일명
- chown .그룹id 파일명
- -R : 하위 디렉토리 속성 전파, 단 명령어 이후 새로 생성하는 파일에는 적용 X

a.txt의 소유주를 a로 변경
a.txt의 그룹을 b로 변경 (.을 찍어 소유주와 그룹을 구분한다)&nbsp;
a.txt의 소유주와 그룹을 root로 변경

 


[특수 권한]
- setuid 4000 x-s(실행권한이 있으면 소문자s) x-S(실행권한이 없으면 대문자S)
     -> 해당 권한이 설정된 파일이 실행되는 동안에는 소유주의 권한으로 실행된다
     -> # chmod 4755 a.txt  실행권한O
     -> # chmod 4655 a.txt  실행권한X

       ex) /etc/passwd 에서 비밀번호를 입력할 때 일반사용자는 해당권한이 없지만 setuid가 걸려있으면
            비밀번호를 바꾸는 명령어를 입력했을 때만은 일반사용자가 소유주의 권한을 얻는다

/etc/passwd는 일반사용자에게 쓰기 권한이 없기 때문에 패스워드 작성이 불가능 하지만 passwd 라는 명령어에 setuid가 걸려있기 때문에 패스워드 작성 할 때 만은 소유주(root)의 권한인 rwx를 가진다


- setgid 2000 x-s x-S
     -> 해당 권한이 설정된 파일이 실행되는 동안에는 그룹의 권한으로 실행된다
     -> # chmod 6775 a.txt  실행권한O
     -> # chmod 6765 a.txt  실행권한X
- stickybit 1000 x-t x-T
     -> 해당 권한이 설정된 디렉토리에서는 파일이나 디렉토리를 생성한 사용자만 삭제 가능
         단, 최고 관리자인 root는 영향을 받지 않는다.
     -> # mkdir 2   stickybit는 디렉토리에 권한 부여
     -> # chmod 7777 2  실행권한O
     -> # chmod 7776 2  실행권한X

/ 최상위 디렉토리에 있는 tmp에 걸려있는 stickybit
a로 로그인 후 tmp로 이동, a.txt를 자유롭게 생성하고 삭제 가능
a가 만든 a.txt는 tmp에 걸려있는 stickybit 때문에 a가 삭제 불가능
최고 관리자인 root는 stickybit의 영향을 받지 않음

 

setuid4000 + setgid2000 + user7 + group7 + others 5 가 설정된 a.txt

 




3. MAC time
- m : modify
- a : access
- c : change
   - 침해사고 분석 시 파일 및 디렉토리의 접근시간(A), 권한변경(C), 내용수정(M) 
     시간 정보는 분석에 필수적인 정보. 따라서 MAC Time 공격자의 시간대별 활동 정리에 필수
   - 시간 정보 확인

 

vi로 파일 생성 후 MAC time 모두 동일
ls 명령어로 확인하는 파일의 시간은 최종 수정 시간
cat 명령어를 사용해 파일 내용을 확인하면 Access 시간만 변경
ls 명령어로 확인하는 시간 정보는 접근 정보가 아님
chmod 명령어로 권한을 변경해도 ls 명령어에 나타나는 시간이 변경되지 않음
change 시간만 변경
cat >> 명령어로 내용 수정하면 Modify와 Change 시간 모두 변경
ls 명령어에서의 시간도 변경됨

관련글 더보기