나의 IT일지
데이터 관리 기본 명령어 본문
서버를 공격하는 공격자는 서버를 공격해오면 기존에 있던 파일의 내용을 수정할 것이다. 만약 우리가 공격자가 수정한 파일의 내용을 찾지 못한다면, 서버는 공격자의 뜻대로 운영이 될 것이다. 이러한 상황을 막기 위해서는 우리는 파일이나 디렉터리를 관리하는 방법을 알아야 한다.
파일/디렉터리 검색 명령어
- find [경로] [옵션 1] ..... [옵션 2].... : 파일/디렉터리 검색하는 명령어
옵션 목록 | 응용 명령어 |
-name [설정값] : 이름으로 검색 -type [설정값] : 저장형태(자료형(f), 디렉토리형(d))로 검색 -size [설정값]: 데이터량으로 검색 -atime [설정값]: 접근 시간 변경된 자료 -mtime [설정값]: 수정 시간 변경된 자료 -ctime [설정값]: 모드 시간 변경된 자료 -exec [설정값]: 다른 명령어 실행 |
find / -name "test*" : root디렉터리에서 test이름이 들어간 파일, 디렉터리를 검색 find /home -atime +1 : home : 디렉터리에서 과거에서부터 어제까지 접근시간이 변경된 파일, 디렉터리를 검색 find /home -atime -1 : home디렉터리에서 어제부터 오늘까지 접근시간이 변경된 파일, 디렉터리를 검색 find /home/mdir -name passwd.txt -exec rm -rf {} \; : mdir디렉터리에서 passwd.txt를 찾아서 삭제 find /home/mdir -name passwd.txt -exec ls -l {} \; : mdir디렉터리에서 passwd.txt를 찾아서 상세히 출력 find /home -atime -1 -exec ls -l {} \; : home디렉터리에서 과거의 시점에서 현재까지 접근시간이 수정된 파일/디렉토리들을 상세히 출력 |
옵션에서 atime, ctime, mtime은 MACtime를 이용하여 자료를 찾는다. 이때 MACtime이란 접근시간 수정시간 모드시간을 말하며, "stat[파일명]"명령어로 확인가능하다.
Access는 접근시간으로 vi편집기로 해당파일에 접근하면 시간이 바뀌며, Modify는 수정시간으로 vi편집기로 해당파일의 내용이 바뀌면 시간이 바뀐다. Change는 모드시간으로 허가권이나 접근시간, 수정시간이 변경된 상태에서 vi편집기를 종료하면 시간이 바뀐다.
그렇다면 옵션에서의 atime, ctime, mtime은 어떻게 진행되는 것일까? 숫자는 오늘을 기점으로 며칠전을 말하는 것이며, +는 과거를 시점으로 더 과거의 시간방향으로 찾으며, -는 과거를 시점에서 현재방향으로 파일의 변경시간 찾는다. 예를 들면 "-atime -5"라고 하면, 5일전을 기준으로 현재까지 접근시간이 변경된 파일을 말한다.
파일 내용 비교 명령어
- cmp [비교파일1] [비교파일2] : 두 파일이 어느부분이 다른지 비교할 때 사용하는 명령어, 단순히 같은지 다른지 확인할 때 사용
- comm [비교파일1] [비교파일2] : 두 파일의 행과 행을 비교할 때 사용하는 명령어 (1행은 파일1, 2행은 파일2, 3행은 공통)
- diff [비교파일1] [비교파일2] : 두 파일 사이의 내용을 비교할 때 사용하는 명령어
문자/문자열(필드) 추출 명령어
- cut [옵션] [파일] : 파일명에 있는 내용을 잘라서 출력하는 명령어
옵션 | 응용 명령어 |
-c [n] : 문자 단위 -f [n] : 문자열(필드) 단위 |
cut -c 2 kim1.txt : kim1.txt의 내용에서 각 줄의 두번째 문자 출력 cut -c 2-4 kim1.txt : kim1.txt의 내용에서 각 줄의 2번 칸~4번 칸 문자 출력 cut -f 1 kim.txt : kim.txt의 내용에서 각 줄의 첫번째 필드를 출력 |
"cut -f 1 kim.txt"의 출력결과를 보면 1열의 출력이 "root linux"인것을 확인 할 수 있다. 이는 space로 필드를 구별했기에 나타난 현상이다. "-f"는 필드를 구별할 때 "tab"으로 구별하기 떄문에, space로 구별하면 1개의 필드로 인식하게 되는것이다.
- awk [옵션] '[조건] [{액션}]' [파일] : awk는 유닉스에서 처음 개발된 스크립트 언어로, 텍스트 형태로 되어있는 입력 데이터를 행과 단어 별로 액션해 출력하는 기능을 가지고 있으며, 주로 패턴의 검색과 조작을 주목적으로 하고 있다. 해당 글에서는 "-F"옵션과 "print"액션을 통해 내용을 추출하는 것을 볼 것이다.
응용 |
awk -F, '{print $1}' kim3.txt : ","로 필드를 구분하며, 첫번째 필드를 출력 awk -F, '{print $1$2}' kim3.txt : ","로 필드를 구분하며, 첫번째,두번째 필드를 출력 |
파일 압축 명령어
- compress [파일] : 파일을 압축시키는 명령어로, 용량이 얼마 안되는 파일은 압축이 되지 않는다.
해제도구 | 확장자 |
uncompress [파일] | *.Z |
- gzip [옵션] [파일] : 파일의 내용을 압축하는 도구로, 압축률의 설정이 가능 (6단계의 압축률)
해제도구 | 확장자 |
gunzip [파일] gzip -d [파일] |
*.gz |
- bzip2 [옵션] [대상파일들] :파일의 내용을 압축하는 도구로, 압축률의 설정이 불가능
해제도구 | 확장자 |
bunzip2 [파일] bzip2 -d [파일] |
*.bz2 |
- xz [옵션] [대상파일들] : 파일의 내용을 압축하는 도구로, 압축률의 설정이 가능하며(15단계의 압축률), 가장 압축율과 안전성이 좋다.
해제도구 | 확장자 |
unxz [파일] xz -d [파일] |
*.xz |
"test1.txt"는 "compress"명령어를 사용했어도, 압축이 되지 않는것을 확인 할 수 있다. 추가적으로 압축전에 데이터가 0이였던 파일들이 압축하고 나서 데이터가 늘어난 것을 확인 할 수 있다. 이는 압축을 할 때, 압축관련 헤더파일이 추가되기 때문이다.
파일/디렉터리 묶기/해제 명령어
- tar [옵션] [파일] [대상 파일/디렉터리] : 대상파일들을 묶거나 묶은 파일을 확인, 해제할 때 사용하는 명령어
옵션 | 응용 명령어 |
-c : 묶기 -x : 해제 -z : gzip파일로 압축 -v : 과정 출력 -f : 파일지정 (필수옵션으로 옵션 조합에서 항상 맨 뒤에 있다) -r : 기존 묶여있는 파일에 파일/디렉터리 추가/삭제 -t : 묶은 파일을 해제하지 않고 파일 목록 확인 |
tar -cvf kim.tar kim*.txt : kim.txt라는 이름이 들어간 모든파일을 kim.tar로 묶는 명령어 tar -czvf test.tar test*.txt : test.txt라는 이름이 들어간 모든파일을 test.tar로 묶어서 압축하는 명령어 tar -vtf kim.tar : kim.tar에 묶여있는 파일 목록 확인 tar -xvf kim.tar : kim.tar를 해제하는 명령어 |
'tar -cvf kim.tar kim*.txt', 'tar -czvf kim1.tar kim*.txt'를 통해 'kim.tar','kim1,tar'이 생성된 것을 확인 할 수 있다. 이때, 두 파일의 데이터 크기가 다른 것을 알 수 있다. 이는 "kim1.tar"은 묶을 때, 압축도 같이 했기에 나타나는 현상이다.
묶인 파일의 목록을 확인하여도 디렉토리의 kim.tar가 해제되지 않은 것을 확인 할 수 있다.
파일 속성 확인 명령어
- file [옵션] [파일/디렉터리] : 디렉터리, 파일의 속성(ex ASCII text, POSIX tar archive...)을 알 수 있는 명령어
링크 파일 생성 명령어
타 디렉토리에 있는 파일/디렉토리을 현 디렉토리에서 쉽게 들어가기 위해서 사용하는 파일을 링크파일이라고 하며, 심볼릭 링크와 하드 링크가 존재한다.
- ln -s [원본 파일] [링크 파일] : 링크파일을 통해 원본파일로 들어갈 수 있도록 하는 명령어로, 심볼릭 링크를 만드는 명령어이다.
"ln -s kim.txt user1.txt"를 통해 user1.txt라는 링크파일이 생성되었다.이때, user1.txt의 내용과 kim.txt의 내용이 동일해 진다. 만약 user1.txt의 내용을 수정하면, 원본파일인 kim.txt의 내용이 같이 수정된다.
심볼릭 링크 특징
- 원본파일이 삭제했을경우 링크파일도 삭제된다. 하지만 링크파일를 삭제하더라도 원본파일은 남아있다.
- i-node번호(파일, 디렉토리 고유번호)가 다르다.
- 링크 수가 증가하지 않는다.
- 사용자의 범위가 모든사용자로 증가한다.
- 디렉토리도 링크가능하다
- ln [원본 파일] [링크 파일] : 링크파일을 통해 원본파일로 들어갈 수 있도록 하는 명령어로, 하드 링크를 만드는 명령어이다.
심볼릭 링크과 같이, "ln kim1.txt user.txt"를 통해 user.txt라는 링크파일이 생성되었다.이때, user.txt의 내용과 kim1.txt의 내용이 동일해 진다. 만약 user.txt의 내용을 수정하면, 원본파일인 kim1.txt의 내용이 같이 수정된다.
하드 링크 특징
- 원본파일이 삭제되더라도, 링크파일은 삭제되지 않음.
- i-node 번호가 같음
- 링크 수가 증가함
- 사용자의 범위가 일정
- 디렉토리는 링크 불가하다
'운영체제 > Linux - CentOs' 카테고리의 다른 글
네트워크와 프로세스 (0) | 2023.03.06 |
---|---|
디스크, 파티션 관리 (1) | 2023.03.05 |
디렉토리, 파일 기본 명령어 (0) | 2023.02.26 |
Linux의 부팅과 기본 명령어 (0) | 2023.02.20 |
운영체제와 Linux (0) | 2023.02.19 |