본문 바로가기
정보보안/이론

[KITRI] Day7. 리눅스 기본 명령어-5

by 민-Zero 2020. 4. 28.

파일검색 명령어

 

which 명령어

which 명령어 : PATH(변수)에 등록된 경로들만 검색하여 명령어를 찾아주는 명령어, 반드시 PATH 변수에 등록된 것만 찾아준다.(echo $PATH 로 PATH에 등록된 경로 확인가능)


whereis 명령어

whereis를 통해 which와 같은 명령어의 위치뿐만 아니라 man명령어로 확인할때 출력되는 해당 명령어의 설명이 존재하는 문서파일까지 같이 찾아준다.
whereis 명령어/문서 : 명령어와 문서(man)를 찾아주는 명령어


locate 명령어

locate 파일: 파일목록이 저장되어 있는 DB내용을 기반으로 모든 종류의 파일을 찾아주는 명령어
가장 빠른편에 속하는 명령어, 단 실제 검색을 수행하지 않고 색인목록을 통해 검색하는 것이므로 등록되어 있지 않으면 찾지 못하고 검색 결과가 틀릴 수 있다. 따라서 색인목록을 최신화해야한다. updatedb 명령을 통해 수행한다.

 

find 명령어

파일명, 권한, 소유주(그룹), 날짜, 용량등 다양한 옵션을 이용하여 검색하는 명령어이다. 검색된 결과를 추가적으로 후처리까지 가능하다.

 

find [경로] [-옵션] [조건] [액션]

 

다음과 같이 명령어를 사용하게 되면 / 디렉토리부터 찾으므로 모든 디렉토리에서 검색하게 되며 -name 옵션을 통해 파일 이름으로 검색을 진행하는데 file이란 이름의 모든 파일을 찾는다. 이때 -print 액션은 찾은 결과를 출력해주도록 하는 액션인데 기본값으로 설정되어 있어 적지않아도 print로 동작한다.

불필요하게 setuid가 설정되고 소유자가 root인 파일을 검색할경우 위와 같이 검색할 수 있다. 이때 -perm 4000으로 검색할경우 퍼미션이 정확하게 4000인 파일만 검색하지만 -perm -4000 으로 수행할 경우 해당 권한의 유무를 확인하게 되어 setuid가 존재하는 모든 파일을 찾게 되는것이다.

 

경로 : 지정한 경로에서부터 하위 디렉토리를 검색한다. 검색 시작 위치라고 생각하면 된다. 

옵션 [조건] : 옵션을 지정하면 해당 조건에 따라 검색한다.
-name 파일명 : 파일명으로 파일을 검색
-type 파일종류 : d(디렉토리), f(파일)
-user 사용자이름 : 소유주명으로 파일을 검색
-group 그룹명 : 그룹명으로 파일을 검색 
-newer 파일명 : 해당 파일을 기준으로 지정한 파일보다 최근 파일을 검색한다.
-mtime 5/+5/-5 : modify time, 지금으로부터 5일전/5일초과/5일미만  수정된 파일 검색
-atime 5/+5/-5 : access time, 지금으로부터 5일전/5일초과/5일미만  접근한 파일 검색
-size 용량[k킬로바이트 M메가바이트 G 기가바이트] : 용량기준으로 파일을 검색 +, -를 사용해 보다큰 작은을 이용하여 검색가능하다. (ex. +5M)
-perm 권한 : 권한(퍼미션)을 기준으로 파일을 검색, 해당 권한과 완전히 같은것만 검색한다.
-perm -권한 :  -를 권한앞에 붙이면 해당 권한의 유무만 검색한다. 지정되지 않은 권한은 무시한다.

액션
-print : 기본값, [경로]파일명만 출력
-ls : ls -lisd 로 출력결과 보여준다.
-delete : 검색된 파일들을 전부 제거하는 옵션
-exec 명령어 {} \; : 미리 정해놓은 액션이 아닌 원하는 명령어로 검색된 파일을 처리할 수 있다. -exec 와 \;는 외부 명령어의 시작과 끝을 의미하고 {}는 find 명령의 결과가 해당 괄호안에 저장되어 외부명령의 일부로 실행하게 되는것이다.

 

find 명령어는 조건 연산자를 활용하여 다양한 이용이 가능하다 or를 사용할 경우 두가지 옵션중 1가지만 만족해도 검색이 되지만 and를 사용할경우 두가지의 옵션을 모두 만족해야 검색이되기 때문에 위의 예시에서 동일한 파일의 검색여부가 다르다.


연산자

-or : 옵션1 -or 옵션2 를 사용하여 검색하면 둘중 1개만 만족해도 검색된다
-and : 옵션1 -and 옵션2 를 사용하여 검색하면 둘다 만족해야 검색된다
ex) find / -perm -1000 -or -perm -2000 -ls 하면 2000부분만 ls가 적용된다. 공통 옵션은 ()를 이용해서 묶을 수 있고 괄호를 Shell 해석 금지하기 위해 \ 를 사용하여 이스케이프 문자로 사용해야한다. 

따라서 이렇게 작성할 수 있다. find / \(-perm -1000 -or -perm -2000\) -ls

 


방화벽 설정
방화벽 설정을 위해서는 포트번호와 프로토콜을 알아야 한다.
ex) http : 80, tcp / ftp : tcp, 20 21 / DNS : tcp udp, 63
iptables
firewall-cmd
/etc/services 에서 설정정보 확인 가능

서비스(데몬) 설정
ntsysv 명령어를 사용하여 서비스의 시작, 중지, 재시작 및 사용 여부를 설정할 수 있다.

방화벽과 서비스(데몬) 설정은 추후에 다시 정리하자


예약작업 관련 명령어

 

at 명령어

1번의 예약 작업을 스케쥴에 설정하여 원하는 시간에 동작하도록 한다.

at 명령어를 통해 작업을 등록할 경우 원하는 시간에 작업이 자동으로 실행되도록 할 수 있다. 하지만 at 명령어는 1회용으로 한번 실행되면 그 다음에는 실행되지 않는다.


at 시간입력 : 예약작업 설정
at now +5 min -> 현재 시간으로 부터 5분후 실행
at now +1 hour -> 현재 시간으로 1시간 후 실행
at 22:00 -> 절대시간으로 동작 오후 10시
at 10:00 pm -> 절대시간으로 동작 오후 10시
at 22:00 tomorrow -> 내일 오후10시(22시)에 실행
at 22:00 april 29 : 4월 29일 오후 10시에 실행
ctrl + d 명령어를 통해 마무리한다.
at -l : 예약작업 목록을 출력
at -r 번호 : 원하는 예약작업을 삭제할 수 있다.
atrm 번호 : 원하는 예약작업을 삭제

cron 명령어
주기(반복)적인 예약작업을 설정한다. 실행 주기는 아래와 같이 설정할 수 있다.

* * * * * 명령어
분(0-59) 시(0-23) 일(1-31) 월(1-12) 요일(0-7)  

 

-e 옵션을 사용하면 vi와 같은 편집기가 실행되며 다양한 주기를 입력하여 반복적인 작업을 스케쥴에 등록할 수 있다.

또한 주기를 입력할때 - , / * 을 이용하여 다양하게 실행간격을 조절할 수 있다.

-(연속적인 범위설정) ,(각각의 범위설정) /(나누어 떨어지는 시간에 실행)

*(any, 어떤거든 무관하다는 뜻 즉, 모든 시간, 분, 일, 월 각각 다 한다는 의미이다.)

-l 옵션을 사용해 등록한 crontab의 작업목록을 확인할 수 있다. 또한 root의 경우 다른 사용자의 crontab을 확인할 수 있다.


crontab -l : 예약작업 목록을 본다
crontab -r : 예약작업을 제거한다.
crontab -e : 편집화면으로 들어가서 vi편집기를 사용하는 것 처럼 등록, 수정, 삭제를 진행한다.

crontabl -u 유저명 -l : 해당 유저의 crontab을 확인할 수 있다.

댓글