본문 바로가기

Linux

04. CentOS7 명령어 - 속성 정보 분석 및 파일 권한 (chmod)

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

1.1. 원본-rw-r--r-- 1 root root     2  2월 17 09:31 a.txt

 

1.2. 분석

  • - : 파일 유형
    • 파일 (-), 디렉토리 (d), Symbolic link (1)
  • 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 : 그룹(group)
  • 2월 17 09:31 : 파일이나 디렉토리가 마지막으로 수정된 시간
  • a.txt : 파일이나 디렉토리의 이름

※ 파일 속성 정보 확인

 

 


2. 권한 변경 및 Test

2.1. chmod

 

2.2. 사용자 지정 옵션

  • ugoa : u(user), g(group), o(other), a(all)
  • + : 권한 추가
  • - : 권한 제거
  • rwx : r(읽기), w(쓰기), x(실행)

※ a.txt 파일에 user 실행 권한 부여

 

※ a.txt 파일에 그룹, 기타사용자 실행 권한 부여

 

※ a.txt 파일에 유저 실행 권한 제거, 기타사용자 쓰기 권한 부여

 

※ a.txt 파일에 유저, 그룹, 기타사용자 읽기 권한 제거

 

※ a.txt 파일의 모든 사용자에게 읽기 권한 부여

 

※ 2 디렉토리 및 그 아래에 있는 모든 파일 및 디렉토리에 유저/그룹/기타사용자, 읽기/쓰기/실행 권한 부여

 

 

2.3. 8진수 법

  • u : 4(r) + 2(w) + 1(x)
  • g : 4(r) + 2(w) + 1(x)
  • o : 4(r) + 2(w) + 1(x)
  • 777 : 첫 번쨰 숫자 user, 두 번째 숫자 group, 세 번쨰 숫자는 other 권한

※ a.txt에 755 권한 부여 ( user: rwx, group: rx, other: rx )

 

※ 현재 디렉토리 및 그 아래에 있는 모든 파일 및 디렉토리에 755 권한 부여 

 

 

2.4. umask

  • 파일 및 디렉토리 생성 시 모든 권한을 부여하며 보안상 문제가 발생함으로 최소 권한 법칙에 근거하여 파일 및 디렉토리의 최대 권한에서 umask 만큼을 빼서 파일 및 디렉토리 생성
  • 디렉토리의 최대 권한은 777, 파일의 최대 권한은 666
  • 디렉토리의 경우 해당 디렉토리에 접근하기 위해서는 반드시 x(실행) 권한이 있어야 함.
  • 파일의 경우 sh 명령어도 강제 실행이 가능함으로 또한 rw 권한만으로 충분하기에 666

※ 현재 umask 값 확인

  • umask 값을 확인해보면 022로 설정되어 있는 것을 확인할 수 있다.
  • 디렉토리 생성 시 디렉토리의 최대 권한인 777에 umask값 022를 적용하여 755(rwxr-xr-x) 권한으로 자동 적용된다.
  • 파일 생성 시 파일의 최대 권한인 666에 umask값 022를 적용하여 644(rs-r--r--) 권한으로 자동 적용된다.

 

※ umask값 0044로 변경 후 파일 및 디렉토리 생성

  • 디렉토리 생성 시 디렉토리의 최대 권한인 777에 umask값 044를 적용하여 733(rwx-wx-wx) 권한으로 자동 적용된다.
  • 파일 생성 시 디렉토리의 최대 권한인 766에 umask값 044를 적용하여 722(rwx-w--w-) 권한으로 자동 적용된다.

2.5. chown 소유권 변경

umask 022 044
최대권한 777 766 777 766
umask 적용 값 755 744 733 722

 

 

2.6. chown 소유권 변경

  • chown 사용자id.그룹id [파일명]
  • chown 사용자id [파일명]
  • chown .그룹id [파일명]
  • -R : 하위 디렉토리 속성 전파, 단 명령어 이후 새로 생성하는 파일에는 적용 안됨

※ a.txt 파일의 소유주 a로 변경

 

※ a.txt 파일의 그룹 b로 변경

 

※ a.txt 파일의 소유주, 그룹 다시 root로 변경

 

※ 2 디렉토리 아래에 있는 모든 파일 및 디렉토리의 소유주는 a, 그룹은 b로 변경 (-R 옵션)

 

2.7. 특수 권한

  • setuid (4000 )
    • 실행권한에 s : setuid 권한부여, 실행권한 있음
    • 실행권한에 S : setuid 권한부여, 실행권한 없음
    • 해당 권한이 설정된 파일이 실행되는 동안에는 소유주의 권한으로 실행된다.
    • 실행되는 동안 소유주 권한을 갖게 되므로, 꼭 필요한 경우가 아닐 경우에는 사용하지 않는다.
    • ex) # chmod 4775 [파일명]            //실행 권한 있음
    •      # chmod 4655 [파일명]            //실행 권한 없음

※ /etc/passwd 파일 및 /usr/bin/passwd 명령어 권한 확인

  • 일반 사용자는 passwd 명령어를 사용하여 본인의 패스워드를 변경할 수 있다.
  • /etc/passwd 파일을 확인해보면 일반사용자에게는 쓰기 권한이 없는 것을 확인할 수 있다. 어떻게 passwd 파일을 변경할 수 있을까?
  • /usr/bin/passwd 명령어의 권한을 확인해보면 setuid 가 설정되어있다. 
  • 일반 사용자가 passwd 명령어를 실행하는 동안에는 소유주인 root 권한을 갖게 된다. 따라서, 일반사용자도 passwd 명령어를 사용하여 /etc/passwd 파일 수정이 가능하게 된다.

 

  • setgid (2000)
    • 실행권한에 s : setgid 권한부여, 실행권한 있음
    • 실행권한에 S : setgid 권한부여, 실행권한 없음
    • 해당 권한이 설정된 파일이 실행되는 동안에는 그룹의 권한으로 실행된다.
    • ex) # chmod 6775 [파일명]          //실행 권한 있음
    •     # chmod 6765 [파일명]          //실행 권한 없음
  • stickybit (1000)
    • 실행권한에 t : stickybit 권한부여, 실행권한 있음
    • 실행권한에 T : stickybit 권한부여, 실행권한 없음
    • 해당 권한이 설정된 디렉토리에서는 파일이나 디렉토리를 생성한 사용자만 삭제 가능. 단 최고 관리자인 root는 영향을 받지 않는다.
    • ex) # mkdir 2                                      //stickybit는 디렉토리에 권한 부여
    •      # chmod 7777 [디렉토리명]              //실행 권한 있음
    •      # chmod 7776 [디렉토리명]              //실행 권한 없음

※ /tmp 디렉토리 아래에 a 유저로 a.txt 파일을 생성한 후 삭제한다.

  • /tmp 디렉토리에 stickybit 권한이 부여된걸 확인할 수 있다.
  • /tmp 디렉토리에 유저 a로 로그인하여 a.txt 파일 생성
  • 생성한 a.txt 파일이 정상적으로 삭제되는지 확인한다.

 

※ /tmp 디렉토리 아래에 a 유저로 a.txt 파일을 생성한 후, b 유저로 로그인하여 a.txt 파일을 삭제한다.

  • b 유저로 로그인하여 a.txt 파일을 삭제한다.
  • a.txt 파일 삭제 시 메세지가 출력되며, 권한이 부여되지 않아 파일을 삭제할 수 없는 것을 확인할 수 있다.

 

  • setuid, setgid, stickybit 권한 부여 실습

※ a.txt 파일에 setuid, 실행 권한 함께 부여

 

※ a.txt 파일에 setuid 권한 부여, 소유주 실행 권한은 부여하지 않음

 

※ a.txt 파일에 setuid/setgid/실행 권한 부여

 

※ a.txt 파일에 setuid/setgid 권한 부여, 이때 소유주/그룹 실행 권한은 부여하지 않음

 

※ 2 디렉토에 stickybit 권한 부여

 

 


 

3. MAC time

3.1. 침해사고 분석 시 파일 및 디렉토리의 접근시간(A), 권한변경(C), 내용수정(M) 시간 정보는 분석에 필수적인 정보임. 따라서 MAC Time 공격자의 시간대별 활동 정리에 필수

 

※ test.txt 파일 생성 후 파일 정보 확인

 

※ test.txt 파일 내용 확인 후 파일 정보 확인

  • cat 명령어로 파일 내용 확인 후, Access time이 변경 됨
  • 파일 수정 시간은 변경되지 않음

 

※ test.txt 파일 권한 변경 후 파일 정보 확인

  • 파일 권한 변경 후, Change time이 변경 됨
  • 파일 수정 시간은 변경되지 않음

 

※ test.txt 파일 내용 수정 후 파일 정보 확인

  • 파일 내용 수정 후, Modify/Change time이 변경 됨
  • 파일 수정 시간이 변경된 것을 확인할 수 있다.
  • 따라서 ls -l 명령어 입력시 확인되는 일시 정보는 파일의 마지막 수정 시간이다.

ad.

  • which [명령어] : 명령어의 위치 확인