본문 바로가기
개인적 정리

[Linux] 명령어 정리

by 설이주인 2023. 8. 8.

파일 디렉토리 directory

/bin : binary 실행 가능한 파일을 나타낸다. ex) 윈도우 실행 파일

 -> /usr/bin , /usr/sbin : ps, cat la ifconfig 유틸리티 포함

 

/home : 사용자 고유의 home 디렉토리

/mnt : 다른 파일 시스템이 파일 시스템에 연결될때 마운트 되는 위치

/media : 보통 CD, USB 장치가 위치하거나 마운트 되는 위치

/etc : 리눅스 환경 설정 파일 포함, 제어하는 설정

/lib : 라이브러리

 

명령어

whoami : 현재 로그인 한 사용자

--help, -h : 도움말

locate : locate [찾고 싶은 키워드] : 파일 전체 검색

whereis : whereis [찾고 싶은 키워드] : 키워드 바이너리 위치와 이용할 수 있는 소스와 메뉴얼 페이지 반환

which : which [찾고 ㅅ싶은 키워드] : 리눅스에서 PATH 바이너리 위치만 반환한다. 해당 키워드가 어느 디렉토리에 존재하는지 확인 가능

find :  find [1.디렉토리] [2.옵션] [3.표현식] : 1. 검색할 디렉토리, 2.일반 파일, 3. 찾을려는 파일

grep : netstat -ano | grep [찾고 싶은 키워드] : 검색

 

+) 검색을 위한 키워드가 애매한 경우 *을 포함해서 검색하자 ex) catwhat hat = *at

 

file, directory : 파일 생성

concatenate -> cat : 주로 파일 내용 확인용으로 사용하지만 생성도 가능하다.

cat > [파일명] : 파일 생성

cat >> [파일명] [내용] : 파일 + 내용 생성

 

touch : 파일 생성

touch [파일명] : new 파일 생성

 

mkdir : 디렉토리 생성

mkdir [파일명]

 

cp :복사

cp [파일명]

 

mv : 파일 위치 변경 명령어지만 이름 바꾸기로도 사용 가능

mv [파일명][new 파일명] : 기존 파일을 new 파일명으로 변경 가능

 

rm : 파일 삭제

rm[파일명]

 

rmdir : 디렉토리 삭제

rmdir [디렉토리명] : 디렉토리 삭제, 안에 파일이 존재하면 삭제가 안됨

 

rm -r [디렉토리명] : 위의 행위 없이 한번에 삭제

 


파일

파일 머리, 꼬리, 줄 번호

 

head : 파일의 시작 부분인

head -20 [파일명] : 파일명의 첫 20줄 확인

 

tail : 파일의 끝 부분 확인

tail -100 [파일명] : 파일의 끝 부분 100줄 확인

 

nl : 줄번호 붙이기

nl [파일명] : 파일 number line 표시

 

sed (stream editor) : 단어의 패턴/텍스트 패턴 검색 후 특정 동작을 진행

sed [1.s/mysql/MYSQL/g] [파일명] : 파일내의 mysql -> MYSQL 1. s:substitution(치환)

추가옵션 : g

 

more : 한 번에 한 페이지만 출력 (enter로 페이지 이동 가능)

more [파일명] : enter > move next page

 

less : 파일 스크롤, 특정 용어 필터링 가능

less [파일명] : /[검색 키워드]

 


네트워크 (아직 사용 안할듯 hosts 말고는)

ifconfig : 활성 네트워크 연결을 조회, 로컬 영역 네트워크, LAN 성정 정보

1. eth0 : Ethernet0 첫 유선 네트워크

2. inet : 위 네트워크 인터페이스에 현재 할당된 ip정보

3. broadcast : 브로드캐스트 주소는 정보를 해당 서브넷의 모든 IP로 전달하기 위한 주소

4. lo : loopback address/locahost의 축약어

5. wlan0 : 무선 인터페이스/어댑터

6. iwconfig : 무선네트워크 장치 점검, 어댑터IP주소, MAC 주소, 어떤 모드인지 확인 가능

 

ip 주소 변경 :

ifconfig eth0 192.???.???.???.??? : 192...를 인터페이스 eth0에 할당 네트워크 마스크, 브로드 캐스트 주소 변경 : eth0 인터페이스에 넷마스크를 255..., 브로드캐스트 주소를 192...로 할당,

 

ifconfig eth0 192... netmask 255... broadcast 192... 

 

MAC 주소 속이기 :

ifconfig eth0 down : 인터페이스 멈춤

ifconfig eth0 hw(하드웨어) ether(이더넷) 00:11:22:33:44:55 (새 MAC주소)

ifconfig eth0 up : 변경 적용

DHCP 서버에 새 IP할당

 

데몬으로 동적 호스트 환경설정 프로토콜(DHCP) 서버 구성 가능 : dhcpd, dhcp

 

DNS(도메인 네임) 조작

dig : dns 대상 도메인에 대한 DNS 정보를 얻을 수 있는 방법을 제공

dig [dns name] ns(name server)

dig [dns name] mx(mail exchange server)

 

DNS 서버 변경 : 시스템의 /etc/resolv.conf 변경

vi /etc/resolv.conf 안의 nameserver 192.???.???.?을 nameserver 8.8.8.8로 변경한다.

 

고유 IP 주소 매핑 : 시스템의 /etc/hosts

기본 : 127.0.0.1 localhost

추가 : 192.???.???.? domain name

 


apt 소프트웨어

소프트웨어 설치 방법

apt : apt-get 으로 새로운 소프트웨어 다운가능

apt-cache-search [키워드] : 검색

apt-get install [패키지명] : 다운로드

apt-get-remove [패키지명] : 소프트웨어 제거

apt-get-purge [패키지명] : 구성파일 제거

apt autoremove [패키지명] : 소프트웨어, 구성 라이브러리, 종속 파일 한번에 제거

apt-get update : 모든 패키지 업데이트

 

ex ) 

GUI : apt-get install synaptic git :

git clone [git url]

 


파일 디렉터리 권한

그룹(group)

r : read

w : write

x : 실행 권한

권한 변경 : chomd

그룹 변경 : chgrp

파일 권한 변경 : chown

 

ugo 기법 : chmod u+x, o+x, hashcat.hcstat

umask : 더 안전한 권한 관리를 위해서 권한에서 특정 값을 빼는 행위

-> 보통 파일은 666 디렉토리는 777

-> 특수 권한 : Set User ID(SUID), Set Group ID (SGID), 스티키(sticky)

 

SUID : 임시 루트 권한 승인

SGID : 루트 사용자의 그룹 권한 승인

 

스티키 비트(sticky bit) : 디렉토리에 설정할 수 있는 권한 비트로서 사용자가 해당 디렉토리 내의 파일을 삭제하거나 이름을 바꿀 수 있도록 허용

 


프로세스 관리

ps의 명령어로 프로세스가 시작된 순서대로 표기되며 pid 번호로 정렬된 프로세스를 볼 수 있다.

top 명령어로 가장 많이 소비되고 있는 프로세스 확인 가능

nice : 프로세스 우선순위 변경

 

nice -n -10 /bin/slowprocess : 현재 우선순위에서 -10처리

renice : -20에서 19 사이의 옵션 값 지정

 

종료 : kill [number]

 

SIGHUP : 1 : 멈춰있는 시그널, 지정된 프로세스 중단 동일 PID로 시작

SIGINT : 2: 인터럽트(INT) 시그널

SIGQUIT : 3 : 코어덤프, 프로세스 종료 후 프로세스 정보를 메모리에 저장한 다음 이 정보를 현재 작업 디렉토리 core 파일에 저장

SIGTERM : 15 : 종료  kill의 기본 시그널

SIGKILL : 9 : 절대 강제 종료 시그널

 

fg : 백그라운드에서 실행 중인 프로세스를 포그라운드로 이동

 

at, crond : 프로레스 예약 실행

at : 명령은 데몬 daemon atd를 설정하는게 사용되며, 해당 작업은 미래의 특정 시점에 한 번은 실행 되도록 예약하는에 유용하다.

crond : 매일, 매주 또는 매월 발생하는 작업을 예약하는데 사용된다.

 


사용자 환경 변수 관리  

리눅스에는 두가지 변수 존재 셸 변수, 환경 변수

 

환경 변수(enviorment) /env 파일에 존재하며 환경 변수는 대문자들로 구성한다.

HOME, PATH, SHELL

set : 모든 환경 변수 조회(셸, 로컬, 사용자 정의 셸 함수, 명령 알리아스....)

 

환경 변수 값 변경 - 한 세션/영구

ex) HITSIZE 

-> 세션 : HITSIZE : 0

-> 영구 : echo $HITSIZE > ~valueofHITSIZE.txt

 

셸 프롬프트 변경

PATH 변수 변경

ex) newhackingtool

-> PATH =$PATH:/root/newhackingtool

PATH 변수의 치환 주의 우리가 원하는 행위는 override가 아닌 append의 행위이다.

 

사용자 정의 변수 생성

-> input : TEMP="temp title"

-> output : echo $TEMP > temp title

 


압축 아카이브

tar : tape archive

baip(GNU zip) : 확장자 : .tar.gz/.tgz

baip : 확장자 : .tar.bz2

compress : 확장자 .tar.Z

dd : 파일, 파일 시스템, 심지어 전체 하드 디스크 드라이브의 비트 단위 복사는 가능하게 한다.

dd if=[입력 파일]of=[출력파일]

 


file sys, storage 관리

/dev

마운트 적용, 해제

파일 시스템 모니터링

 

장치 디렉토리 /dev

sda : 첫 번째 SATA 하드 드라이브

sdb : 두 번째 SATA 하드 드라이브

sdc : 세 번째 SATA 하드 드라이브

sdd : 네 번째 SATA 하드 드라이브

 

드라이브 파티션

sda1 : 첫 번째 SATA 하드 드라이브 1파티션

sda2 : 첫 번째 SATA 하드 드라이브 2파티션

sda3 : 첫 번째 SATA 하드 드라이브 3파티션

sda4 : 첫 번째 SATA 하드 드라이브 4파티션

 

/dev 안의 장치 파일의 이름에 주의 필요

c: character

b : 데이터 블록(DVD drive)

lsblk : list block

마운트 : 자동으로 카운트 진행, 위치 : /mnt, /media

df(disk free) : 사용중인 공간에 대한 정보, CD, DVD, 하드 디스크의 기본 정보 제공

fsck(filesystem check) : 파일 시스템에 오류가 존재하는지 확인, 가능한 경우 손상 복구, 불량 영역 블록 테이블에 넣어 상태 표시

 


로깅

rsyslog

logrotate 로그 자동 관리

 

rsyslog 로깅 데몬

rsyslog.conf 규칙 : 어떤 종류의 정보를 기록할지, 어떤 프로그램이 그들의 메세지를 기록할지, 로그 파일이 어디에 위치하는지 지정

 

facility : mila, kernel, lpr과 같이 메세지를 기록할 프로그램

- auth, authpriv : 보안/인증 메세지

- cron : 시간 데몬

- daemon : 기타 데몬

- kern : 커널 메세지

- lpr : 프린트 메세지

- mail : 메일 시스템

- user : 일반 사용자 수준 메세지

 

logrotate를 통한 로그 자동 정리 :

# see "man logrotate" for details

# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# use date as a suffix of the rotated file
dateext
# uncomment this if you want your log files compressed
#compress
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
# no packages own wtmp and btmp -- we'll rotate them here

/var/log/wtmp {
monthly
create 0664 root utmp
minsize 1M
rotate 1
}

/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}

shred : 파일을 삭제하고 여러 번 덮어쓴다.

-f : 파일의 권한에 변경이 필요한 경우 덮어쓴다.

-n : 덮어쓴 횟수 지정 가능

ex) shred -f -n 10 [파일명] : 파일을 10번 파쇄

 


서비스의 사용 및 악용

service status 관리 : service [서비스명] start | stop | restart

 

아파치 웹서버 구축

-> apt-get install apache2

-> service apache2 start

 

openSSH : SSH 보안쉘

 MYSQL, MariaDB 정보 추출

-> service mysql start

-> mysql -u root -packages

 

PostgreSQL

-> apt-get postgres install

-> service postgres start

 


무선네크워크 이해와 검사

iwlist : 연결하고자 하는 ap가 명확하지 않는 경우

무선 네트워크 카드 모니터 모드로 설정 : airmin-ng start|stop|restart [인터페이스명]


리눅스 커널 및 로드 가능한 커널 관리

sysctl : 커널 튜닝 : 메모리 할강, 네트워크 활성화, 보안 강화

/etc/sysctl.conf

 


잡 스케쥴링테스트 자동화

/etc/crontab에서 설정

ex) 월-금 매일 AM 02:30에 작동

M H DOM MON DOW USER COMMAND

30 2 * * 1-5 root [명령어 실행.sh]

 

백업 태스트 스케쥴링테스트

ex) 매주 토요일에서 일요일 AM02:00에 실행하는 스케쥴링

00 2 * * 0 backup [파일명]

 

 

MySQL 스케쥴링

MySQLScanner.sh

ex) 매일 매월 매요일 9:00에 일반 사용자로 실행

00 9 * * * user /usr/share/MySQLScanner.sh

 

ex) 주말 새벽 2시 진행

00 2 * 6-8 0,6 user /usr/share/MySQLScanner.sh

 

 

corntab 단축어

@yearly

@annually

@monthly

@weekly

@daily

@midnight

@noon

@reboot

 

'개인적 정리' 카테고리의 다른 글

개발 추가 일지  (0) 2023.10.22
네트워크 기본 정리  (0) 2023.10.19
트랜잭션 Isolation levels  (0) 2022.10.14
MEMO 22.10.10  (0) 2022.10.10
next(), nextLine()  (0) 2022.09.27