파일 디렉토리 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 스케쥴링
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 |