Linux

22.02.17

가로선 2022. 2. 17. 18:40

 

   목차   

 

1. 파일 & 디렉터리 속성정보(메타 데이터) 분석

2. 권한 변경

 - chmod

3. umask

4. 소유권 변경

 - chown

5. 특수 권한

 - setuid

 - setgid

 - stickybit

6. MAC Time

 - stat

7. vi 편집기 연습

 - vi 커서 이동

 - 문자, 행 삽입

 - 텍스트 변경

 - 텍스트 삭제

 - 복사 및 이동

 - 행 번호 설정

 - 탐색 및 대체

 - 보관 및 종료


 

   파일 & 디렉터리 속성정보 분석   

 

a.txt에 대해 분석해보자

 - 문장 맨 앞을 보고 확인할 수 있다

 

파일은 - / 디렉터리는 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)

    - 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와 같이 동시에 같이 사용도 가능하다

 

a(all)에 +x를 통하여 u, g, o 모두에게 x 권한을 추가하였다

 

 - - : 권한 제거

 

- 를 통하여 권한을 제거하였다

    - u-wx를 통하여 a.txt의 user권한에서 쓰기, 실행 권한을 제거하였다

    - go-x를 통하여 a.txt의 group과 other 권한에 쓰기 권한을 제거하였다

 

test 디렉터리에 u, g, o 모두에게 rwx 권한 부여(-R 옵션을 통해 하위에도 속성 전파)

    - -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

 

8진법으로 권한 추가

 

 

   umask   

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

   근거하여 파일 및 디렉터리의 최대 권한에서 umask 만큼을 빼서 파일 및 디렉터리 생성

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

 

umask 설정

    - 앞에 0 하나는 아직은 무시해도 무방하다

 

umask로 인한 a.txt(파일), test(디렉터리)의 기본 권한 확인

    - 777 - 022 = 755(rwxr-xr-x)

    - 666 - 022 = 644(rw-r--r--)

 

 

   소유권 변경   

 

   chown   
 - 사용법 : chown 사용자id.그룹id 파일명

 

owner(소유주)가 변경되었다

    - chown 사용자id 파일명(사용자만 변경하고 싶을 때)

    - useradd를 사용하여 a, b라는 사용자를 임의로 만들었다

 

group이 변경되었다

    - chown .그룹id 파일명(그룹만 변경하고 싶을 때)

 

owner, group 둘다 root로 변경되었다

 

-R 옵션을 통해 test디렉터리 하위에도 디렉터리 속성을 전파

    - -R : 하위 디렉터리 속성 전파, 단 명령어 이후 새로 생성하는 파일에는 적용 안됨

 

전부 owner = a / group = b로 변경

 

 

   특수권한   

 

   setuid   

 - 4000 / x -> s(실행권한o) / x -> S(실행권한 x)

    - 해당 권한이 설정된 파일이 실행되는 동안에는 소유주의 권한으로 실행된다(위험)
    ex) chmod 4755 a.txt 실행권한 o

 

rws 권한이 적용되었다

 

    ex) chmod 4655 a.txt 실행권한 x

 

rwS 권한이 적용되었다

 

    - /etc/passwd에선 일반 사용자는 읽기 밖에 안되는데 어떻게 비밀번호를 바꿀 수 있지?

 

/usr/bin/passwd에는 setuid가 적용되어있다

 

    - setuid가 적용되어있어서 일반 사용자가 이 권한을 실행할 땐 root의 권한을 가짐

    -> 일반사용자가 자신의 passwd를 바꿀 수 있다

 

   setgid   

 - 2000 / x -> s(실행권한o) / x -> S(실행권한 x)
    - 해당 권한이 설정된 파일이 실행되는 동안에는 그룹의 권한으로 실행된다
    ex) chmod 6775 a.txt(더하는 느낌 실행권한 -> 4000 + 2000)

 

그룹에 rws 권한이 적용되었다


    ex) chmod 6665 a.txt 실행권한 x

 

그룹에 rwS 권한이 적용되었다

 

   stickybit   

 - 1000 / x -> t(실행권한o) / x -> T(실행권한 x)
 - 해당 권한이 설정된 디렉터리에서는 파일이나 디렉터리를 생성한 사용자만 삭제 가능
   단, 최고 관리자인 root는 영향을 받지 않는다
    ex) chmod 1757 test 실행권한

 

other에 t 권한이 추가 된다


    ex) chmod 7776 test 실행권한 x

 

other에 T 권한이 추가 된다

 

 - /tmp 예제

 

/tmp는 sticky bit가 적용되어있다

 

a 사용자로 접속하여 /tmp에 a.txt 파일 생성

 

b 사용자로 접속하여 a 사용자가 생성한 a.txt 파일을 제거하는데 실패함

    - /tmp에 sticky bit가 설정되어있어 파일을 생성한 사용자인 a만 삭제가 가능하다

 

root는 삭제가 가능하다(최고 관리자는 깡패이다)

 

 

   MAC Time   

 - M(Modify), A(Access), C(Change)

 - Modify : 파일 or 디렉터리 수정

 - Access : 파일 or 디렉터리 접근

 - Change : 파일 or 디렉터리 권한 변경

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

 

   stat   

 - MAC Time 확인 명령어

 

cat 명령어로 mactest.txt 접근 전 시간 확인

 

cat 명령어로 mactest.txt 접근 후 시간 확인

    - MAC Time의 Access 타임은 변화가 있었지만, ls -l에서의 mactest.txt의 시간에는 변화 x

 

chmod로 mactest.txt의 권한 변경 후 시간 확인

    - MAC Time의 Change 타임은 변화가 있었지만, ls -l에서의 mactest.txt의 시간에는 변화 x

 

cat을 통해 mactest.txt를 수정한 후 시간 확인

    - 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 : 커서 오른쪽, 행의 끝에 문자 삽입

 

동에 커서를 두었을 때, a와 A 사용시

 

 - i : 커서 왼쪽에 문자 삽입

 - I : 커서 왼쪽, 행의 처음에 문자 삽입

 

백에 커서를 두었을 때, i와 I 사용시

 

 - o : 커서 아래에 행 삽입

 - O : 커서 위에 행 삽입

 

무에 커서를 두었을 때, o와 O 사용시

 

   텍스트 변경   

- u : 이전 명령 취소(되돌리기)

 

   텍스트 삭제   

 - x : 커서가 있는 문자 삭제

 - '숫자'x : 커서가 있는 위치부터 숫자만큼 문자 삭제

 

x 5번 or 5x를 통해 삭제(o사용시 글자+띄어쓰기 = 5)

 

 - dd : 커서가 있는 라인 삭제

 - '숫자'dd : 커서가 있는 라인부터 숫자만큼 라인 삭제

    ex ) 애국가 1절은 4dd로 삭제 가능

 

 - :'숫자1'.'숫자2'd(delete) : 숫자1 ~ 숫자2번째 행 삭제

    ex) 애국가 1절은 :1.4d로 삭제 가능

 

   복사 및 이동   

 - yy : 행 복사

 - '숫자'yy : '숫자'만큼 행 복사

 - p : 현재 행 아래에 삽입

 

무에 커서를 두고 2yy로 복사 -> 바에 커서를 두고 p로 삽입

 - :'숫자1','숫자2' co(copy) '숫자3' : 숫자1 ~ 숫자2 행을 숫자3 행 다음을 복사

    ex) 위의 경우 3,4co7로 가능

 

   행 번호 설정    

 - :set nu : 행 번호 표시

 - :set nonu : 행 번호 숨기기

 

:set nu를 통해 행 번호 표시

 

   탐색 및 대체   

 - /검색할 문자열/ : 오른쪽 아래 방향으로 문자열 검색

    - n : 문자열 다음으로 계속 검색

    - N : 문자열 전으로 계속 검색

 

:/무궁화/를 통해 무궁화 검색

 

 - s/문자열1/문자열2/ : 현재 행의 문자열1을 문자열2로 대체

 

18라인에 커서를 두고 무궁화를 안녕하세요로 대체

 

 - g 옵션 없이 사용하면 그 행에 같은 문자열이 있을 때는 앞에 것만 변경된다

    - 전부 변경하고 싶으면 s/문자열1/문자열2/g를 사용

 

13라인에 커서를 두고 무궁화를 하이요로 대체(g옵션 추가)

 

 - %s/문자열1/문자열2/g : 모든 문장의 문자열1을 문자열2로 대체

 

%s/무궁화/굿나잇/g를 사용하여 문장에 남아있는 무궁화를 굿나잇으로 대체

 

   보관 및 종료   

 - :w(write) : 변경사항 보관(저장)

 - :q(quit) : 수정한 파일을 저장하지 않고 vi 편집기 종료

 - :wq : 변경사항 저장 후 vi 편집기 종료

 - :q! : 변경사항 저장하지 않고 종료

    - 만약, vi 편집기에서 실수가 있었다면 :q!로 빠져나와서 다시하면 된다