linux 다루는 법(기초)
기본적인 shell command와 패키지들을 알려주고자 한다.
해킹란에 적기는 뭐 해서 기타카테고리에 적는다
1. io redirection(입출력) < / << / >> / >
linux에는 cat 이라는 command가 있다.
cat은 입력한 값을 그대로 터미널창에 뱉는 명령어이다.(stdin -> stdout)
cat filename을 할때 현재 존재하는 filename에 맞는 file이 있다면 내용을 터미널에 출력하라는 명령을 수행한다.
cat > filename은 단 하나의 기호값 차이지만 그 쓰임새는 다르다.
cat > filename 은 cat으로 입력한 값을 filename에 뱉는 명령어이다.(stdin -> file)
현재 존재하는 파일이라면 파일에 있던 내용을 모두 초기화 하고 새로 작성한다.
또, cat >> filename은 파일에 있던 내용을 초기화 하지 않고 원래 있던 곳에 append한다.(stdin -> file)
여기서 이제 < 라는 부분을 생각해 볼 것이다.
cat < filename 이라는 내용을 친다면
filename이라는 내용을 cat이 입력값으로 받아서 터미널 창으로 뱉는다.(file->stdout)
cat << filename은 쓰임이 약간 다르다
cat << EOF
EOF라는 입력을 받을 때 까진 입력을 계속한다는 의미를 가지고 있다.
어떠한 실행파일에서 나오는 표준입출력을
/file > log 에 저장한다고 한다.
여기서 포준오류가 출력되게 하고 싶다면 뒤에 2>1을 더 붙여주면 된다.
2. vi, vim 에디터
nano나 gedit, cat같은 편집기가 존재하기는 한다.
하지만 이것들은 굉장히 쓰기가 불편하다.
가장 편하게 쓰이는 편집기가 바로 vi, vim에디터다.
둘 차이라고 하면 vim에디터는 커스텀을 해서 쓸 수 있는 걸로 알고있다.
vim에디터를 사용하면 좀더 예쁘고 컬러풀하게 가독성있는 코드를 작성할 수 있다.
알아야할 명령어
a, i 입력
dd 한줄 삭제
yy 복사
esc 입력 모드 중지
:q! 강제종료 .swp 파일 남지 않음
:q 종료
:wq 작성한 것을 저장 후 종료
:w 저장
3. 디렉토리 관련 명령어
디렉토리 정보 보기
ls(단순 filename)
ls -l(권한 보이기)
ls -al(.swp 파일 같은 숨김파일까지 모두 보이기)
ls 디렉토리명 (현재 디렉토리 밑에 있는 하위디렉토리아래 있는 디렉토리 및 파일들을 보여준다)
이 외에도 S, u, c같은 명령어가 있지만 저 세개를 제일 많이 쓴다.
pwd - 현재 디렉토리 경로
디렉토리 이동
cd (home 디렉토리 이동)
cd ~ (home 디렉토리 이동)
cd .. (부모 디렉토리 이동)
cd directoryname (자식 디렉토리 이동)
cd / (root 디렉토리로 이동)
cd - (이전 디렉토리 이동)
디렉토리 생성, 삭제
mkdir 디렉토리명 (디렉토리 생성)
rm -d 디렉토리명 (디렉토리 삭제)
rmdir 디렉토리명 (디렉토리 삭제)
4. 파일 관련
touch 빈 파일 생성
cat > 파일명 (표준 입력으로 파일 작성)
편집기 사용
rm 파일명(파일 삭제)
cp 파일명1 파일명2 (파일명1을 현재위치에 있는 파일명2로 복사)
cp 파일명 1 파일명2 파일명3 .... 디렉토리명 (파일 1,2,3.... 들을 현위치에 존재하는 디렉토리명으로 옮긴다)
cp * 디렉토리명 (현 위치에 존재하는 해당 디렉토리로 모든 파일을 이동시킨다.
mv 파일명 디렉토리명(현위치에 존재하는 파일을 해당 디렉토리로 이동)
mv 파일명1 파일명2 (파일명1을 파일명2로 이름 바꾸기)
또 여러가지 옵션들이 있는데 (ex. -i, -r) 한번 찾아보길 바란다.
참고로 디렉토리명이라고 썼을뿐 경로를 적어도 된다.
5. file 찾기
(1) find
find 경로 -type f -name "*찾는이름일부"
https://www.tecmint.com/35-practical-examples-of-linux-find-command/
35 Practical Examples of Linux Find Command
The Linux Find Command is one of the most important and frequently used command command-line utility to search and locate the list of files and directories.
www.tecmint.com
find를 다루는 35가지 방법 예제
(2) grep
grep 옵션 "내용"
-> 자세히 찾아보길 추천
(3) locate
ex) locate *.log
-> 디렉토리가 아닌, DB를 뒤진다. db 내에 파일들을 뒤지는 것. 즉 빠르게 파일을 가져올 수 있다.
locate가 사용하는 db를 m locate
(4)whereis
실행파일을 찾아주는 명령어
whereis ls
/bin/ls /usr/share/man/man1/ls.1.gz
번외. linux 정보 확인
id(현재 내가 로그인한 사용자정보)
id 계정명(계정명의 사용자정보)
users(현재 로그인한 아이디 목록)
whoami(현재 로그인한 사용자)
who am i (최초로그인한 정보)
groups(특정 사용자나, 현재 로그인한 사용자가 속한 그룹 정보 표시)
echo $PATH 환경변수 확인
ps aux 현재 작동하는 프로세스 확인 (여기에 grep 같은 걸 연계하기 가능)
~. 이건 해킹할때 적으려던 메모였는데.. 너무 적은 메모라서 일단 여기에도 적어둔다
elf file 정보 읽기 readelf
보호기법 확인 checksec
gdb 명령어 중, catch syscall arch_prctl(fs 값 설정 시 호출되는 함수) 해당 systemcall 이 작동하면 멈춘다.
catch *(0x주소) 해당 메모리의 값이 변하면 실행 중단