22.02.17
목차
1. 파일 & 디렉터리 속성정보(메타 데이터) 분석
2. 권한 변경
- chmod
3. umask
4. 소유권 변경
- chown
5. 특수 권한
- setuid
- setgid
- stickybit
6. MAC Time
- stat
7. vi 편집기 연습
- vi 커서 이동
- 문자, 행 삽입
- 텍스트 변경
- 텍스트 삭제
- 복사 및 이동
- 행 번호 설정
- 탐색 및 대체
- 보관 및 종료
파일 & 디렉터리 속성정보 분석
- 문장 맨 앞을 보고 확인할 수 있다
- 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)
- other : 소유주나 그룹에 속하지 않은 모든 user
- 1 : link 갯수
- root : 소유주(owner)
- root : 그룹(group)
- 16 : 용량(파일이나 디렉터리의 size)
- 2월 17 16:40 : 파일이나 디렉터리 마지막으로 수정된 시간
- a.txt : 파일이나 디렉터리의 이름
권한 변경
chmod
- 사용자 지정 옵션
- u, g, o, a : u(user), g(group), o(other), a(all)
- r, w, x : r(읽기), w(쓰기), x(실행)
- + : 권한 추가
- u+x를 통하여 a.txt의 user권한에 실행권한이 생겼다
- go+x를 통하여 a.txt의 group과 other 권한에 실행권한이 생겼다
- go와 같이 동시에 같이 사용도 가능하다
- - : 권한 제거
- u-wx를 통하여 a.txt의 user권한에서 쓰기, 실행 권한을 제거하였다
- go-x를 통하여 a.txt의 group과 other 권한에 쓰기 권한을 제거하였다
- -R : 하위 디렉터리 속성 전파
- 단, 명령어 이후 새로 생성하는 파일에는 적용되지 않는다
- 8진수법(대중적)
- u : 4(r) + 2(w) + 1(x)
- g : 4(r) + 2(w) + 1(x)
- o : 4(r) + 2(w) + 1(x)
- -R 옵션도 똑같이 적용가능
ex) 파일에 777 부여 : -rwxrwxrwx / 디렉에 653 부여 : drw-r-x-wx
umask
- 파일 및 디렉터리 생성 시 모든 권한을 부여하면 보안상 문제가 발생함으로 최소 권한 법칙에
근거하여 파일 및 디렉터리의 최대 권한에서 umask 만큼을 빼서 파일 및 디렉터리 생성
- 디렉터리의 최대 권한은 777, 파일의 최대 권한은 666
- 디렉터리의 경우 해당 디렉터리에 접근하기 위해서는 반드시 x권한이 있어야함
- 파일의 경우 sh명령어도 강제실행이 가능함으로 또한 rw권한만으로 충분하기에 666
- 앞에 0 하나는 아직은 무시해도 무방하다
- 777 - 022 = 755(rwxr-xr-x)
- 666 - 022 = 644(rw-r--r--)
소유권 변경
chown
- 사용법 : chown 사용자id.그룹id 파일명
- chown 사용자id 파일명(사용자만 변경하고 싶을 때)
- useradd를 사용하여 a, b라는 사용자를 임의로 만들었다
- chown .그룹id 파일명(그룹만 변경하고 싶을 때)
- -R : 하위 디렉터리 속성 전파, 단 명령어 이후 새로 생성하는 파일에는 적용 안됨
특수권한
setuid
- 4000 / x -> s(실행권한o) / x -> S(실행권한 x)
- 해당 권한이 설정된 파일이 실행되는 동안에는 소유주의 권한으로 실행된다(위험)
ex) chmod 4755 a.txt 실행권한 o
ex) chmod 4655 a.txt 실행권한 x
- /etc/passwd에선 일반 사용자는 읽기 밖에 안되는데 어떻게 비밀번호를 바꿀 수 있지?
- setuid가 적용되어있어서 일반 사용자가 이 권한을 실행할 땐 root의 권한을 가짐
-> 일반사용자가 자신의 passwd를 바꿀 수 있다
setgid
- 2000 / x -> s(실행권한o) / x -> S(실행권한 x)
- 해당 권한이 설정된 파일이 실행되는 동안에는 그룹의 권한으로 실행된다
ex) chmod 6775 a.txt(더하는 느낌 실행권한 -> 4000 + 2000)
ex) chmod 6665 a.txt 실행권한 x
stickybit
- 1000 / x -> t(실행권한o) / x -> T(실행권한 x)
- 해당 권한이 설정된 디렉터리에서는 파일이나 디렉터리를 생성한 사용자만 삭제 가능
단, 최고 관리자인 root는 영향을 받지 않는다
ex) chmod 1757 test 실행권한
ex) chmod 7776 test 실행권한 x
- /tmp 예제
- /tmp에 sticky bit가 설정되어있어 파일을 생성한 사용자인 a만 삭제가 가능하다
MAC Time
- M(Modify), A(Access), C(Change)
- Modify : 파일 or 디렉터리 수정
- Access : 파일 or 디렉터리 접근
- Change : 파일 or 디렉터리 권한 변경
- 침해사고 분석 시 파일 및 디렉터리의 접근시간(A), 권한변경(C). 내용수정(M) 시간 정보는
분석에 필수적인 정보이다. 따라서 MAC Time 공격자의 시간대별 활동 정리에 필수
stat
- MAC Time 확인 명령어
- MAC Time의 Access 타임은 변화가 있었지만, ls -l에서의 mactest.txt의 시간에는 변화 x
- MAC Time의 Change 타임은 변화가 있었지만, ls -l에서의 mactest.txt의 시간에는 변화 x
- MAC Time의 Modify, Change 타임에 변화 o, ls -l에서의 mactest.txt의 시간에도 변화 o
- ls -l에서의 시간은 마지막 수정 시간이다
vi 편집기 연습
- 처음 vi 편집기 들어갈 때는 명령모드
- 자유자재로 할 수 있게 연습하자
vi 커서 이동
- h(←), j(↓) ,k(↑), l(→)
- vi 편집기에서는 보통 화살표키로도 사용되지만, 안되는 경우도 있으니 명령어도 외우자
- w : 오른쪽 한 단어의 끝 부분으로 커서 이동
- e : 오른쪽 한 단어의 앞 부분으로 커서이동
- b : 왼쪽 한 단어의 앞 부분으로 커서 이동
- ^ : 행(문장)의 맨 왼쪽으로 커서 이동
- '숫자'G : 숫자를 지정한 줄로 커서 이동
문자, 행 삽입
- a : 커서 오른쪽에 문자 삽입
- A : 커서 오른쪽, 행의 끝에 문자 삽입
- i : 커서 왼쪽에 문자 삽입
- I : 커서 왼쪽, 행의 처음에 문자 삽입
- o : 커서 아래에 행 삽입
- O : 커서 위에 행 삽입
텍스트 변경
- u : 이전 명령 취소(되돌리기)
텍스트 삭제
- x : 커서가 있는 문자 삭제
- '숫자'x : 커서가 있는 위치부터 숫자만큼 문자 삭제
- dd : 커서가 있는 라인 삭제
- '숫자'dd : 커서가 있는 라인부터 숫자만큼 라인 삭제
ex ) 애국가 1절은 4dd로 삭제 가능
- :'숫자1'.'숫자2'd(delete) : 숫자1 ~ 숫자2번째 행 삭제
ex) 애국가 1절은 :1.4d로 삭제 가능
복사 및 이동
- yy : 행 복사
- '숫자'yy : '숫자'만큼 행 복사
- p : 현재 행 아래에 삽입
- :'숫자1','숫자2' co(copy) '숫자3' : 숫자1 ~ 숫자2 행을 숫자3 행 다음을 복사
ex) 위의 경우 3,4co7로 가능
행 번호 설정
- :set nu : 행 번호 표시
- :set nonu : 행 번호 숨기기
탐색 및 대체
- /검색할 문자열/ : 오른쪽 아래 방향으로 문자열 검색
- n : 문자열 다음으로 계속 검색
- N : 문자열 전으로 계속 검색
- s/문자열1/문자열2/ : 현재 행의 문자열1을 문자열2로 대체
- g 옵션 없이 사용하면 그 행에 같은 문자열이 있을 때는 앞에 것만 변경된다
- 전부 변경하고 싶으면 s/문자열1/문자열2/g를 사용
- %s/문자열1/문자열2/g : 모든 문장의 문자열1을 문자열2로 대체
보관 및 종료
- :w(write) : 변경사항 보관(저장)
- :q(quit) : 수정한 파일을 저장하지 않고 vi 편집기 종료
- :wq : 변경사항 저장 후 vi 편집기 종료
- :q! : 변경사항 저장하지 않고 종료
- 만약, vi 편집기에서 실수가 있었다면 :q!로 빠져나와서 다시하면 된다